EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker. eric7

Tue, 15 Jun 2021 19:42:36 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 15 Jun 2021 19:42:36 +0200
branch
eric7
changeset 8427
5ccf32f95805
parent 8425
63cc81d35ddc
child 8428
2deec2f8a9ab

EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.

eric7.epj file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.api file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.bas file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.EricWidgets.EricSpellCheckedTextEdit.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/index-eric7.EricWidgets.html file | annotate | diff | comparison | revisions
eric7/EricWidgets/EricSpellCheckedTextEdit.py file | annotate | diff | comparison | revisions
eric7/i18n/eric7_cs.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.qm file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_empty.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_en.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_es.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_fr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_it.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_pt.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_ru.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_tr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/eric7.epj	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7.epj	Tue Jun 15 19:42:36 2021 +0200
@@ -2270,7 +2270,8 @@
       "eric7/Plugins/WizardPlugins/FontDialogWizard/FontDialogOptionsDialog.py",
       "eric7/WebBrowser/QtHelp/QtHelpDocumentationSettings.py",
       "eric7/WebBrowser/QtHelp/QtHelpDocumentationSettingsWidget.py",
-      "eric7/WebBrowser/QtHelp/QtHelpDocumentationConfigurationDialog.py"
+      "eric7/WebBrowser/QtHelp/QtHelpDocumentationConfigurationDialog.py",
+      "eric7/EricWidgets/EricSpellCheckedTextEdit.py"
     ],
     "SPELLEXCLUDES": "Dictionaries/excludes.dic",
     "SPELLLANGUAGE": "en_US",
--- a/eric7/APIs/Python3/eric7.api	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/APIs/Python3/eric7.api	Tue Jun 15 19:42:36 2021 +0200
@@ -1618,6 +1618,23 @@
 eric7.EricWidgets.EricSingleApplication.SAOpenFile?7
 eric7.EricWidgets.EricSingleApplication.SAOpenMultiProject?7
 eric7.EricWidgets.EricSingleApplication.SAOpenProject?7
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter.ErrorFormat?7
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter.TokenFilters?7
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter.chunkers?4()
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter.dict?4()
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter.highlightBlock?4(text)
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter.setChunkers?4(chunkers)
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter.setDict?4(spellDict)
+eric7.EricWidgets.EricSpellCheckedTextEdit.EnchantHighlighter?1(*args)
+eric7.EricWidgets.EricSpellCheckedTextEdit.EricSpellCheckedPlainTextEdit?1(*args)
+eric7.EricWidgets.EricSpellCheckedTextEdit.EricSpellCheckedTextEdit.setAcceptRichText?4(accept)
+eric7.EricWidgets.EricSpellCheckedTextEdit.EricSpellCheckedTextEdit?1(*args)
+eric7.EricWidgets.EricSpellCheckedTextEdit.SpellCheckMixin.MaxSuggestions?7
+eric7.EricWidgets.EricSpellCheckedTextEdit.SpellCheckMixin.contextMenuEvent?4(evt)
+eric7.EricWidgets.EricSpellCheckedTextEdit.SpellCheckMixin.dict?4()
+eric7.EricWidgets.EricSpellCheckedTextEdit.SpellCheckMixin.setDict?4(spellDict)
+eric7.EricWidgets.EricSpellCheckedTextEdit.SpellCheckMixin.setFormat?4(formatName)
+eric7.EricWidgets.EricSpellCheckedTextEdit.SpellCheckMixin?1()
 eric7.EricWidgets.EricSqueezeLabels.EricSqueezeLabel.paintEvent?4(event)
 eric7.EricWidgets.EricSqueezeLabels.EricSqueezeLabel.setText?4(txt)
 eric7.EricWidgets.EricSqueezeLabels.EricSqueezeLabel?1(parent=None)
--- a/eric7/APIs/Python3/eric7.bas	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/APIs/Python3/eric7.bas	Tue Jun 15 19:42:36 2021 +0200
@@ -191,6 +191,7 @@
 EditorTypingPage ConfigurationPageBase Ui_EditorTypingPage
 EmailDialog QDialog Ui_EmailDialog
 EmailPage ConfigurationPageBase Ui_EmailPage
+EnchantHighlighter QSyntaxHighlighter
 Enum ClbrBaseClasses.Enum VisibilityMixin
 EricAction QAction
 EricAnimatedLabel QLabel
@@ -256,6 +257,8 @@
 EricSimpleHelpDialog QDialog Ui_EricSimpleHelpDialog
 EricSingleApplicationClient SingleApplicationClient
 EricSingleApplicationServer SingleApplicationServer
+EricSpellCheckedPlainTextEdit QPlainTextEdit SpellCheckMixin
+EricSpellCheckedTextEdit QTextEdit SpellCheckMixin
 EricSqueezeLabel QLabel
 EricSqueezeLabelPath QLabel
 EricSslCertificateSelectionDialog QDialog Ui_EricSslCertificateSelectionDialog
Binary file eric7/Documentation/Help/source.qch has changed
--- a/eric7/Documentation/Help/source.qhp	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/Documentation/Help/source.qhp	Tue Jun 15 19:42:36 2021 +0200
@@ -159,6 +159,7 @@
             <section title="eric7.EricWidgets.EricSideBar" ref="eric7.EricWidgets.EricSideBar.html" />
             <section title="eric7.EricWidgets.EricSimpleHelpDialog" ref="eric7.EricWidgets.EricSimpleHelpDialog.html" />
             <section title="eric7.EricWidgets.EricSingleApplication" ref="eric7.EricWidgets.EricSingleApplication.html" />
+            <section title="eric7.EricWidgets.EricSpellCheckedTextEdit" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html" />
             <section title="eric7.EricWidgets.EricSqueezeLabels" ref="eric7.EricWidgets.EricSqueezeLabels.html" />
             <section title="eric7.EricWidgets.EricStringListEditWidget" ref="eric7.EricWidgets.EricStringListEditWidget.html" />
             <section title="eric7.EricWidgets.EricTabWidget" ref="eric7.EricWidgets.EricTabWidget.html" />
@@ -4641,6 +4642,13 @@
       <keyword name="EmailPage.on_useSslButton_toggled" id="EmailPage.on_useSslButton_toggled" ref="eric7.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_useSslButton_toggled" />
       <keyword name="EmailPage.on_useTlsButton_toggled" id="EmailPage.on_useTlsButton_toggled" ref="eric7.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_useTlsButton_toggled" />
       <keyword name="EmailPage.save" id="EmailPage.save" ref="eric7.Preferences.ConfigurationPages.EmailPage.html#EmailPage.save" />
+      <keyword name="EnchantHighlighter" id="EnchantHighlighter" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EnchantHighlighter" />
+      <keyword name="EnchantHighlighter (Constructor)" id="EnchantHighlighter (Constructor)" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EnchantHighlighter.__init__" />
+      <keyword name="EnchantHighlighter.chunkers" id="EnchantHighlighter.chunkers" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EnchantHighlighter.chunkers" />
+      <keyword name="EnchantHighlighter.dict" id="EnchantHighlighter.dict" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EnchantHighlighter.dict" />
+      <keyword name="EnchantHighlighter.highlightBlock" id="EnchantHighlighter.highlightBlock" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EnchantHighlighter.highlightBlock" />
+      <keyword name="EnchantHighlighter.setChunkers" id="EnchantHighlighter.setChunkers" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EnchantHighlighter.setChunkers" />
+      <keyword name="EnchantHighlighter.setDict" id="EnchantHighlighter.setDict" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EnchantHighlighter.setDict" />
       <keyword name="Enum" id="Enum" ref="eric7.Utilities.ClassBrowsers.ClbrBaseClasses.html#Enum" />
       <keyword name="Enum" id="Enum" ref="eric7.Utilities.ClassBrowsers.protoclbr.html#Enum" />
       <keyword name="Enum (Constructor)" id="Enum (Constructor)" ref="eric7.Utilities.ClassBrowsers.ClbrBaseClasses.html#Enum.__init__" />
@@ -5250,6 +5258,12 @@
       <keyword name="EricSingleApplicationServer.__saOpenMultiProject" id="EricSingleApplicationServer.__saOpenMultiProject" ref="eric7.EricWidgets.EricSingleApplication.html#EricSingleApplicationServer.__saOpenMultiProject" />
       <keyword name="EricSingleApplicationServer.__saOpenProject" id="EricSingleApplicationServer.__saOpenProject" ref="eric7.EricWidgets.EricSingleApplication.html#EricSingleApplicationServer.__saOpenProject" />
       <keyword name="EricSingleApplicationServer.handleCommand" id="EricSingleApplicationServer.handleCommand" ref="eric7.EricWidgets.EricSingleApplication.html#EricSingleApplicationServer.handleCommand" />
+      <keyword name="EricSpellCheckedPlainTextEdit" id="EricSpellCheckedPlainTextEdit" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EricSpellCheckedPlainTextEdit" />
+      <keyword name="EricSpellCheckedPlainTextEdit (Constructor)" id="EricSpellCheckedPlainTextEdit (Constructor)" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EricSpellCheckedPlainTextEdit.__init__" />
+      <keyword name="EricSpellCheckedTextEdit" id="EricSpellCheckedTextEdit" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EricSpellCheckedTextEdit" />
+      <keyword name="EricSpellCheckedTextEdit (Constructor)" id="EricSpellCheckedTextEdit (Constructor)" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EricSpellCheckedTextEdit.__init__" />
+      <keyword name="EricSpellCheckedTextEdit (Module)" id="EricSpellCheckedTextEdit (Module)" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html" />
+      <keyword name="EricSpellCheckedTextEdit.setAcceptRichText" id="EricSpellCheckedTextEdit.setAcceptRichText" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#EricSpellCheckedTextEdit.setAcceptRichText" />
       <keyword name="EricSqueezeLabel" id="EricSqueezeLabel" ref="eric7.EricWidgets.EricSqueezeLabels.html#EricSqueezeLabel" />
       <keyword name="EricSqueezeLabel (Constructor)" id="EricSqueezeLabel (Constructor)" ref="eric7.EricWidgets.EricSqueezeLabels.html#EricSqueezeLabel.__init__" />
       <keyword name="EricSqueezeLabel.paintEvent" id="EricSqueezeLabel.paintEvent" ref="eric7.EricWidgets.EricSqueezeLabels.html#EricSqueezeLabel.paintEvent" />
@@ -13632,6 +13646,20 @@
       <keyword name="SpellCheckDictionariesReader (Module)" id="SpellCheckDictionariesReader (Module)" ref="eric7.EricXML.SpellCheckDictionariesReader.html" />
       <keyword name="SpellCheckDictionariesReader.__readDictionary" id="SpellCheckDictionariesReader.__readDictionary" ref="eric7.EricXML.SpellCheckDictionariesReader.html#SpellCheckDictionariesReader.__readDictionary" />
       <keyword name="SpellCheckDictionariesReader.readXML" id="SpellCheckDictionariesReader.readXML" ref="eric7.EricXML.SpellCheckDictionariesReader.html#SpellCheckDictionariesReader.readXML" />
+      <keyword name="SpellCheckMixin" id="SpellCheckMixin" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin" />
+      <keyword name="SpellCheckMixin (Constructor)" id="SpellCheckMixin (Constructor)" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__init__" />
+      <keyword name="SpellCheckMixin.__correctWord" id="SpellCheckMixin.__correctWord" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__correctWord" />
+      <keyword name="SpellCheckMixin.__createCorrectionsMenu" id="SpellCheckMixin.__createCorrectionsMenu" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__createCorrectionsMenu" />
+      <keyword name="SpellCheckMixin.__createFormatsMenu" id="SpellCheckMixin.__createFormatsMenu" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__createFormatsMenu" />
+      <keyword name="SpellCheckMixin.__createLanguagesMenu" id="SpellCheckMixin.__createLanguagesMenu" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__createLanguagesMenu" />
+      <keyword name="SpellCheckMixin.__createSpellcheckContextMenu" id="SpellCheckMixin.__createSpellcheckContextMenu" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__createSpellcheckContextMenu" />
+      <keyword name="SpellCheckMixin.__cursorForMisspelling" id="SpellCheckMixin.__cursorForMisspelling" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__cursorForMisspelling" />
+      <keyword name="SpellCheckMixin.__setFormat" id="SpellCheckMixin.__setFormat" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__setFormat" />
+      <keyword name="SpellCheckMixin.__setLanguage" id="SpellCheckMixin.__setLanguage" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.__setLanguage" />
+      <keyword name="SpellCheckMixin.contextMenuEvent" id="SpellCheckMixin.contextMenuEvent" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.contextMenuEvent" />
+      <keyword name="SpellCheckMixin.dict" id="SpellCheckMixin.dict" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.dict" />
+      <keyword name="SpellCheckMixin.setDict" id="SpellCheckMixin.setDict" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.setDict" />
+      <keyword name="SpellCheckMixin.setFormat" id="SpellCheckMixin.setFormat" ref="eric7.EricWidgets.EricSpellCheckedTextEdit.html#SpellCheckMixin.setFormat" />
       <keyword name="SpellChecker" id="SpellChecker" ref="eric7.QScintilla.SpellChecker.html#SpellChecker" />
       <keyword name="SpellChecker (Constructor)" id="SpellChecker (Constructor)" ref="eric7.QScintilla.SpellChecker.html#SpellChecker.__init__" />
       <keyword name="SpellChecker (Module)" id="SpellChecker (Module)" ref="eric7.QScintilla.SpellChecker.html" />
@@ -18647,6 +18675,7 @@
       <file>eric7.EricWidgets.EricSideBar.html</file>
       <file>eric7.EricWidgets.EricSimpleHelpDialog.html</file>
       <file>eric7.EricWidgets.EricSingleApplication.html</file>
+      <file>eric7.EricWidgets.EricSpellCheckedTextEdit.html</file>
       <file>eric7.EricWidgets.EricSqueezeLabels.html</file>
       <file>eric7.EricWidgets.EricStringListEditWidget.html</file>
       <file>eric7.EricWidgets.EricTabWidget.html</file>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.EricWidgets.EricSpellCheckedTextEdit.html	Tue Jun 15 19:42:36 2021 +0200
@@ -0,0 +1,660 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.EricWidgets.EricSpellCheckedTextEdit</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.EricWidgets.EricSpellCheckedTextEdit</h1>
+
+<p>
+Module implementing QTextEdit and QPlainTextEdit widgets with embedded spell
+checking.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#EnchantHighlighter">EnchantHighlighter</a></td>
+<td>Class implementing a QSyntaxHighlighter subclass that consults a pyEnchant dictionary to highlight misspelled words.</td>
+</tr>
+<tr>
+<td><a href="#EricSpellCheckedPlainTextEdit">EricSpellCheckedPlainTextEdit</a></td>
+<td>Class implementing a QPlainTextEdit with built-in spell checker.</td>
+</tr>
+<tr>
+<td><a href="#EricSpellCheckedTextEdit">EricSpellCheckedTextEdit</a></td>
+<td>Class implementing a QTextEdit with built-in spell checker.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin">SpellCheckMixin</a></td>
+<td>Class implementing the spell-check mixin for the widget classes.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+<hr />
+<a NAME="EnchantHighlighter" ID="EnchantHighlighter"></a>
+<h2>EnchantHighlighter</h2>
+
+<p>
+    Class implementing a QSyntaxHighlighter subclass that consults a
+    pyEnchant dictionary to highlight misspelled words.
+</p>
+<h3>Derived from</h3>
+QSyntaxHighlighter
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>ErrorFormat</td></tr><tr><td>TokenFilters</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#EnchantHighlighter.__init__">EnchantHighlighter</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#EnchantHighlighter.chunkers">chunkers</a></td>
+<td>Public method to get the chunkers in use.</td>
+</tr>
+<tr>
+<td><a href="#EnchantHighlighter.dict">dict</a></td>
+<td>Public method to get the spelling dictionary in use.</td>
+</tr>
+<tr>
+<td><a href="#EnchantHighlighter.highlightBlock">highlightBlock</a></td>
+<td>Public method to apply the text highlight.</td>
+</tr>
+<tr>
+<td><a href="#EnchantHighlighter.setChunkers">setChunkers</a></td>
+<td>Public method to set the chunkers to be used.</td>
+</tr>
+<tr>
+<td><a href="#EnchantHighlighter.setDict">setDict</a></td>
+<td>Public method to set the spelling dictionary to be used.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="EnchantHighlighter.__init__" ID="EnchantHighlighter.__init__"></a>
+<h4>EnchantHighlighter (Constructor)</h4>
+<b>EnchantHighlighter</b>(<i>*args</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>*args</i> (list)</dt>
+<dd>
+list of arguments for the QSyntaxHighlighter
+</dd>
+</dl>
+<a NAME="EnchantHighlighter.chunkers" ID="EnchantHighlighter.chunkers"></a>
+<h4>EnchantHighlighter.chunkers</h4>
+<b>chunkers</b>(<i></i>)
+
+<p>
+        Public method to get the chunkers in use.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+list of chunkers in use
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list
+</dd>
+</dl>
+<a NAME="EnchantHighlighter.dict" ID="EnchantHighlighter.dict"></a>
+<h4>EnchantHighlighter.dict</h4>
+<b>dict</b>(<i></i>)
+
+<p>
+        Public method to get the spelling dictionary in use.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+spelling dictionary
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+enchant.Dict
+</dd>
+</dl>
+<a NAME="EnchantHighlighter.highlightBlock" ID="EnchantHighlighter.highlightBlock"></a>
+<h4>EnchantHighlighter.highlightBlock</h4>
+<b>highlightBlock</b>(<i>text</i>)
+
+<p>
+        Public method to apply the text highlight.
+</p>
+<dl>
+
+<dt><i>text</i> (str)</dt>
+<dd>
+text to be spell-checked
+</dd>
+</dl>
+<a NAME="EnchantHighlighter.setChunkers" ID="EnchantHighlighter.setChunkers"></a>
+<h4>EnchantHighlighter.setChunkers</h4>
+<b>setChunkers</b>(<i>chunkers</i>)
+
+<p>
+        Public method to set the chunkers to be used.
+</p>
+<dl>
+
+<dt><i>chunkers</i> (list)</dt>
+<dd>
+chunkers to be used
+</dd>
+</dl>
+<a NAME="EnchantHighlighter.setDict" ID="EnchantHighlighter.setDict"></a>
+<h4>EnchantHighlighter.setDict</h4>
+<b>setDict</b>(<i>spellDict</i>)
+
+<p>
+        Public method to set the spelling dictionary to be used.
+</p>
+<dl>
+
+<dt><i>spellDict</i> (enchant.Dict)</dt>
+<dd>
+spelling dictionary
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="EricSpellCheckedPlainTextEdit" ID="EricSpellCheckedPlainTextEdit"></a>
+<h2>EricSpellCheckedPlainTextEdit</h2>
+
+<p>
+    Class implementing a QPlainTextEdit with built-in spell checker.
+</p>
+<h3>Derived from</h3>
+QPlainTextEdit, SpellCheckMixin
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#EricSpellCheckedPlainTextEdit.__init__">EricSpellCheckedPlainTextEdit</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="EricSpellCheckedPlainTextEdit.__init__" ID="EricSpellCheckedPlainTextEdit.__init__"></a>
+<h4>EricSpellCheckedPlainTextEdit (Constructor)</h4>
+<b>EricSpellCheckedPlainTextEdit</b>(<i>*args</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>*args</i> (list)</dt>
+<dd>
+list of arguments for the QPlainTextEdit constructor.
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="EricSpellCheckedTextEdit" ID="EricSpellCheckedTextEdit"></a>
+<h2>EricSpellCheckedTextEdit</h2>
+
+<p>
+    Class implementing a QTextEdit with built-in spell checker.
+</p>
+<h3>Derived from</h3>
+QTextEdit, SpellCheckMixin
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#EricSpellCheckedTextEdit.__init__">EricSpellCheckedTextEdit</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#EricSpellCheckedTextEdit.setAcceptRichText">setAcceptRichText</a></td>
+<td>Public method to set the text edit mode.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="EricSpellCheckedTextEdit.__init__" ID="EricSpellCheckedTextEdit.__init__"></a>
+<h4>EricSpellCheckedTextEdit (Constructor)</h4>
+<b>EricSpellCheckedTextEdit</b>(<i>*args</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>*args</i> (list)</dt>
+<dd>
+list of arguments for the QPlainTextEdit constructor.
+</dd>
+</dl>
+<a NAME="EricSpellCheckedTextEdit.setAcceptRichText" ID="EricSpellCheckedTextEdit.setAcceptRichText"></a>
+<h4>EricSpellCheckedTextEdit.setAcceptRichText</h4>
+<b>setAcceptRichText</b>(<i>accept</i>)
+
+<p>
+        Public method to set the text edit mode.
+</p>
+<dl>
+
+<dt><i>accept</i> (bool)</dt>
+<dd>
+flag indicating to accept rich text
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="SpellCheckMixin" ID="SpellCheckMixin"></a>
+<h2>SpellCheckMixin</h2>
+
+<p>
+    Class implementing the spell-check mixin for the widget classes.
+</p>
+<h3>Derived from</h3>
+None
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>MaxSuggestions</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#SpellCheckMixin.__init__">SpellCheckMixin</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__correctWord">__correctWord</a></td>
+<td>Private slot to correct the misspelled word with the selected correction.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__createCorrectionsMenu">__createCorrectionsMenu</a></td>
+<td>Private method to create a menu for corrections of the selected word.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__createFormatsMenu">__createFormatsMenu</a></td>
+<td>Private method to create a menu for selecting the document format.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__createLanguagesMenu">__createLanguagesMenu</a></td>
+<td>Private method to create a menu for selecting the spell-check language.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__createSpellcheckContextMenu">__createSpellcheckContextMenu</a></td>
+<td>Private method to create the spell-check context menu.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__cursorForMisspelling">__cursorForMisspelling</a></td>
+<td>Private method to create a text cursor selecting the misspelled word.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__setFormat">__setFormat</a></td>
+<td>Private slot to set the selected document format.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.__setLanguage">__setLanguage</a></td>
+<td>Private slot to set the selected language.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.contextMenuEvent">contextMenuEvent</a></td>
+<td>Protected method to handle context menu events to add a spelling suggestions submenu.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.dict">dict</a></td>
+<td>Public method to get a reference to the dictionary in use.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.setDict">setDict</a></td>
+<td>Public method to set the dictionary to be used.</td>
+</tr>
+<tr>
+<td><a href="#SpellCheckMixin.setFormat">setFormat</a></td>
+<td>Public method to set the document format.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="SpellCheckMixin.__init__" ID="SpellCheckMixin.__init__"></a>
+<h4>SpellCheckMixin (Constructor)</h4>
+<b>SpellCheckMixin</b>(<i></i>)
+
+<p>
+        Constructor
+</p>
+<a NAME="SpellCheckMixin.__correctWord" ID="SpellCheckMixin.__correctWord"></a>
+<h4>SpellCheckMixin.__correctWord</h4>
+<b>__correctWord</b>(<i>act</i>)
+
+<p>
+        Private slot to correct the misspelled word with the selected
+        correction.
+</p>
+<dl>
+
+<dt><i>act</i> (QAction)</dt>
+<dd>
+reference to the selected action
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.__createCorrectionsMenu" ID="SpellCheckMixin.__createCorrectionsMenu"></a>
+<h4>SpellCheckMixin.__createCorrectionsMenu</h4>
+<b>__createCorrectionsMenu</b>(<i>cursor, parent=None</i>)
+
+<p>
+        Private method to create a menu for corrections of the selected word.
+</p>
+<dl>
+
+<dt><i>cursor</i> (QTextCursor)</dt>
+<dd>
+reference to the text cursor
+</dd>
+<dt><i>parent</i> (QWidget (optional))</dt>
+<dd>
+reference to the parent widget (defaults to None)
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+menu with corrections
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.__createFormatsMenu" ID="SpellCheckMixin.__createFormatsMenu"></a>
+<h4>SpellCheckMixin.__createFormatsMenu</h4>
+<b>__createFormatsMenu</b>(<i>parent=None</i>)
+
+<p>
+        Private method to create a menu for selecting the document format.
+</p>
+<dl>
+
+<dt><i>parent</i> (QWidget (optional))</dt>
+<dd>
+reference to the parent widget (defaults to None)
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+menu with document formats
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.__createLanguagesMenu" ID="SpellCheckMixin.__createLanguagesMenu"></a>
+<h4>SpellCheckMixin.__createLanguagesMenu</h4>
+<b>__createLanguagesMenu</b>(<i>parent=None</i>)
+
+<p>
+        Private method to create a menu for selecting the spell-check language.
+</p>
+<dl>
+
+<dt><i>parent</i> (QWidget (optional))</dt>
+<dd>
+reference to the parent widget (defaults to None)
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+menu with spell-check languages
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.__createSpellcheckContextMenu" ID="SpellCheckMixin.__createSpellcheckContextMenu"></a>
+<h4>SpellCheckMixin.__createSpellcheckContextMenu</h4>
+<b>__createSpellcheckContextMenu</b>(<i>pos</i>)
+
+<p>
+        Private method to create the spell-check context menu.
+</p>
+<dl>
+
+<dt><i>pos</i> (QPoint)</dt>
+<dd>
+position of the mouse pointer
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+context menu with additional spell-check entries
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.__cursorForMisspelling" ID="SpellCheckMixin.__cursorForMisspelling"></a>
+<h4>SpellCheckMixin.__cursorForMisspelling</h4>
+<b>__cursorForMisspelling</b>(<i>pos</i>)
+
+<p>
+        Private method to create a text cursor selecting the misspelled word.
+</p>
+<dl>
+
+<dt><i>pos</i> (QPoint)</dt>
+<dd>
+position of the misspelled word
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+text cursor for the misspelled word
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QTextCursor
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.__setFormat" ID="SpellCheckMixin.__setFormat"></a>
+<h4>SpellCheckMixin.__setFormat</h4>
+<b>__setFormat</b>(<i>act</i>)
+
+<p>
+        Private slot to set the selected document format.
+</p>
+<dl>
+
+<dt><i>act</i> (QAction)</dt>
+<dd>
+reference to the selected action
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.__setLanguage" ID="SpellCheckMixin.__setLanguage"></a>
+<h4>SpellCheckMixin.__setLanguage</h4>
+<b>__setLanguage</b>(<i>act</i>)
+
+<p>
+        Private slot to set the selected language.
+</p>
+<dl>
+
+<dt><i>act</i> (QAction)</dt>
+<dd>
+reference to the selected action
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.contextMenuEvent" ID="SpellCheckMixin.contextMenuEvent"></a>
+<h4>SpellCheckMixin.contextMenuEvent</h4>
+<b>contextMenuEvent</b>(<i>evt</i>)
+
+<p>
+        Protected method to handle context menu events to add a spelling
+        suggestions submenu.
+</p>
+<dl>
+
+<dt><i>evt</i> (QContextMenuEvent)</dt>
+<dd>
+reference to the context menu event
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.dict" ID="SpellCheckMixin.dict"></a>
+<h4>SpellCheckMixin.dict</h4>
+<b>dict</b>(<i></i>)
+
+<p>
+        Public method to get a reference to the dictionary in use.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+reference to the current dictionary
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+enchant.Dict
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.setDict" ID="SpellCheckMixin.setDict"></a>
+<h4>SpellCheckMixin.setDict</h4>
+<b>setDict</b>(<i>spellDict</i>)
+
+<p>
+        Public method to set the dictionary to be used.
+</p>
+<dl>
+
+<dt><i>spellDict</i> (emchant.Dict)</dt>
+<dd>
+reference to the spell-check dictionary
+</dd>
+</dl>
+<a NAME="SpellCheckMixin.setFormat" ID="SpellCheckMixin.setFormat"></a>
+<h4>SpellCheckMixin.setFormat</h4>
+<b>setFormat</b>(<i>formatName</i>)
+
+<p>
+        Public method to set the document format.
+</p>
+<dl>
+
+<dt><i>formatName</i> (str)</dt>
+<dd>
+name of the document format
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/eric7/Documentation/Source/index-eric7.EricWidgets.html	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/Documentation/Source/index-eric7.EricWidgets.html	Tue Jun 15 19:42:36 2021 +0200
@@ -157,6 +157,10 @@
 <td>Module implementing the single application server and client.</td>
 </tr>
 <tr>
+<td><a href="eric7.EricWidgets.EricSpellCheckedTextEdit.html">EricSpellCheckedTextEdit</a></td>
+<td>Module implementing QTextEdit and QPlainTextEdit widgets with embedded spell checking.</td>
+</tr>
+<tr>
 <td><a href="eric7.EricWidgets.EricSqueezeLabels.html">EricSqueezeLabels</a></td>
 <td>Module implementing labels that squeeze their contents to fit the size of the label.</td>
 </tr>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/EricWidgets/EricSpellCheckedTextEdit.py	Tue Jun 15 19:42:36 2021 +0200
@@ -0,0 +1,420 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing QTextEdit and QPlainTextEdit widgets with embedded spell
+checking.
+"""
+
+import sys
+
+import enchant
+from enchant import tokenize
+from enchant.errors import TokenizerNotFoundError, DictNotFoundError
+from enchant.utils import trim_suggestions
+
+from PyQt6.QtCore import pyqtSlot, Qt, QCoreApplication
+from PyQt6.QtGui import (
+    QAction, QActionGroup, QSyntaxHighlighter, QTextBlockUserData,
+    QTextCharFormat, QTextCursor
+)
+from PyQt6.QtWidgets import QMenu, QTextEdit, QPlainTextEdit
+
+# TODO: add user dictionaries with respective menu entries
+
+
+class SpellCheckMixin():
+    """
+    Class implementing the spell-check mixin for the widget classes.
+    """
+    # don't show more than this to keep the menu manageable
+    MaxSuggestions = 20
+    
+    def __init__(self):
+        """
+        Constructor
+        """
+        self.__highlighter = EnchantHighlighter(self.document())
+        try:
+            # Start with a default dictionary based on the current locale.
+            spellDict = enchant.Dict()
+        except DictNotFoundError:
+            # Use English dictionary if no locale dictionary is available.
+            spellDict = enchant.Dict("en")
+        self.__highlighter.setDict(spellDict)
+    
+    def contextMenuEvent(self, evt):
+        """
+        Protected method to handle context menu events to add a spelling
+        suggestions submenu.
+        
+        @param evt reference to the context menu event
+        @type QContextMenuEvent
+        """
+        menu = self.__createSpellcheckContextMenu(evt.pos())
+        menu.exec(evt.globalPos())
+    
+    def __createSpellcheckContextMenu(self, pos):
+        """
+        Private method to create the spell-check context menu.
+        
+        @param pos position of the mouse pointer
+        @type QPoint
+        @return context menu with additional spell-check entries
+        @rtype QMenu
+        """
+        menu = self.createStandardContextMenu(pos)
+        
+        # Add a submenu for setting the spell-check language and
+        # document format.
+        menu.addSeparator()
+        menu.addMenu(self.__createLanguagesMenu(menu))
+        menu.addMenu(self.__createFormatsMenu(menu))
+        
+        # Try to retrieve a menu of corrections for the right-clicked word
+        spellMenu = self.__createCorrectionsMenu(
+            self.__cursorForMisspelling(pos), menu)
+        
+        if spellMenu:
+            menu.insertSeparator(menu.actions()[0])
+            menu.insertMenu(menu.actions()[0], spellMenu)
+        
+        return menu
+    
+    def __createCorrectionsMenu(self, cursor, parent=None):
+        """
+        Private method to create a menu for corrections of the selected word.
+        
+        @param cursor reference to the text cursor
+        @type QTextCursor
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        @return menu with corrections
+        @rtype QMenu
+        """
+        if cursor is None:
+            return None
+        
+        text = cursor.selectedText()
+        suggestions = trim_suggestions(text,
+                                       self.__highlighter.dict().suggest(text),
+                                       SpellCheckMixin.MaxSuggestions)
+        
+        spellMenu = QMenu(
+            QCoreApplication.translate("SpellCheckMixin",
+                                       "Spelling Suggestions"),
+            parent)
+        for word in suggestions:
+            act = spellMenu.addAction(word)
+            act.setData((cursor, word))
+        
+        # Only return the menu if it's non-empty
+        if spellMenu.actions():
+            spellMenu.triggered.connect(self.__correctWord)
+            return spellMenu
+        
+        return None
+    
+    def __createLanguagesMenu(self, parent=None):
+        """
+        Private method to create a menu for selecting the spell-check language.
+        
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        @return menu with spell-check languages
+        @rtype QMenu
+        """
+        curLanguage = self.__highlighter.dict().tag
+        languageMenu = QMenu(
+            QCoreApplication.translate("SpellCheckMixin", "Language"),
+            parent)
+        languageActions = QActionGroup(languageMenu)
+        
+        for language in enchant.list_languages():
+            act = QAction(language, languageActions)
+            act.setCheckable(True)
+            act.setChecked(language == curLanguage)
+            act.setData(language)
+            languageMenu.addAction(act)
+        
+        languageMenu.triggered.connect(self.__setLanguage)
+        return languageMenu
+    
+    def __createFormatsMenu(self, parent=None):
+        """
+        Private method to create a menu for selecting the document format.
+        
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        @return menu with document formats
+        @rtype QMenu
+        """
+        formatMenu = QMenu(
+            QCoreApplication.translate("SpellCheckMixin", "Format"),
+            parent)
+        formatActions = QActionGroup(formatMenu)
+        
+        curFormat = self.__highlighter.chunkers()
+        for name, chunkers in (
+            (QCoreApplication.translate("SpellCheckMixin", "Text"),
+             []),
+            (QCoreApplication.translate("SpellCheckMixin", "HTML"),
+             [tokenize.HTMLChunker])
+        ):
+            act = QAction(name, formatActions)
+            act.setCheckable(True)
+            act.setChecked(chunkers == curFormat)
+            act.setData(chunkers)
+            formatMenu.addAction(act)
+        
+        formatMenu.triggered.connect(self.__setFormat)
+        return formatMenu
+    
+    def __cursorForMisspelling(self, pos):
+        """
+        Private method to create a text cursor selecting the misspelled word.
+        
+        @param pos position of the misspelled word
+        @type QPoint
+        @return text cursor for the misspelled word
+        @rtype QTextCursor
+        """
+        cursor = self.cursorForPosition(pos)
+        misspelledWords = getattr(cursor.block().userData(), "misspelled", [])
+        
+        # If the cursor is within a misspelling, select the word
+        for (start, end) in misspelledWords:
+            if start <= cursor.positionInBlock() <= end:
+                blockPosition = cursor.block().position()
+                
+                cursor.setPosition(blockPosition + start,
+                                   QTextCursor.MoveMode.MoveAnchor)
+                cursor.setPosition(blockPosition + end,
+                                   QTextCursor.MoveMode.KeepAnchor)
+                break
+        
+        if cursor.hasSelection():
+            return cursor
+        else:
+            return None
+    
+    @pyqtSlot(QAction)
+    def __correctWord(self, act):
+        """
+        Private slot to correct the misspelled word with the selected
+        correction.
+        
+        @param act reference to the selected action
+        @type QAction
+        """
+        cursor, word = act.data()
+        
+        cursor.beginEditBlock()
+        cursor.removeSelectedText()
+        cursor.insertText(word)
+        cursor.endEditBlock()
+    
+    @pyqtSlot(QAction)
+    def __setLanguage(self, act):
+        """
+        Private slot to set the selected language.
+        
+        @param act reference to the selected action
+        @type QAction
+        """
+        language = act.data()
+        self.__highlighter.setDict(enchant.Dict(language))
+    
+    @pyqtSlot(QAction)
+    def __setFormat(self, act):
+        """
+        Private slot to set the selected document format.
+        
+        @param act reference to the selected action
+        @type QAction
+        """
+        chunkers = act.data()
+        self.__highlighter.setChunkers(chunkers)
+    
+    def setFormat(self, formatName):
+        """
+        Public method to set the document format.
+        
+        @param formatName name of the document format
+        @type str
+        """
+        self.__highlighter.setChunkers(
+            [tokenize.HTMLChunker]
+            if format == "html" else
+            []
+        )
+    
+    def dict(self):
+        """
+        Public method to get a reference to the dictionary in use.
+        
+        @return reference to the current dictionary
+        @rtype enchant.Dict
+        """
+        return self.__highlighter.dict()
+    
+    def setDict(self, spellDict):
+        """
+        Public method to set the dictionary to be used.
+        
+        @param spellDict reference to the spell-check dictionary
+        @type emchant.Dict
+        """
+        self.__highlighter.setDict(spellDict)
+
+
+class EnchantHighlighter(QSyntaxHighlighter):
+    """
+    Class implementing a QSyntaxHighlighter subclass that consults a
+    pyEnchant dictionary to highlight misspelled words.
+    """
+    TokenFilters = (tokenize.EmailFilter, tokenize.URLFilter)
+
+    # Define the spell-check style once and just assign it as necessary
+    ErrorFormat = QTextCharFormat()
+    ErrorFormat.setUnderlineColor(Qt.GlobalColor.red)
+    ErrorFormat.setUnderlineStyle(
+        QTextCharFormat.UnderlineStyle.SpellCheckUnderline)
+    
+    def __init__(self, *args):
+        """
+        Constructor
+        
+        @param *args list of arguments for the QSyntaxHighlighter
+        @type list
+        """
+        QSyntaxHighlighter.__init__(self, *args)
+        
+        self.__spellDict = None
+        self.__chunkers = []
+    
+    def chunkers(self):
+        """
+        Public method to get the chunkers in use.
+        
+        @return list of chunkers in use
+        @rtype list
+        """
+        return self.__chunkers
+    
+    def setChunkers(self, chunkers):
+        """
+        Public method to set the chunkers to be used.
+        
+        @param chunkers chunkers to be used
+        @type list
+        """
+        self.__chunkers = chunkers
+        self.setDict(self.dict())
+    
+    def dict(self):
+        """
+        Public method to get the spelling dictionary in use.
+        
+        @return spelling dictionary
+        @rtype enchant.Dict
+        """
+        return self.__spellDict
+    
+    def setDict(self, spellDict):
+        """
+        Public method to set the spelling dictionary to be used.
+        
+        @param spellDict spelling dictionary
+        @type enchant.Dict
+        """
+        try:
+            self.__tokenizer = tokenize.get_tokenizer(
+                spellDict.tag,
+                chunkers=self.__chunkers,
+                filters=EnchantHighlighter.TokenFilters)
+        except TokenizerNotFoundError:
+            # Fall back to the "good for most euro languages" English tokenizer
+            self.__tokenizer = tokenize.get_tokenizer(
+                chunkers=self.__chunkers,
+                filters=EnchantHighlighter.TokenFilters)
+        self.__spellDict = spellDict
+        
+        self.rehighlight()
+    
+    def highlightBlock(self, text):
+        """
+        Public method to apply the text highlight.
+        
+        @param text text to be spell-checked
+        @type str
+        """
+        """Overridden QSyntaxHighlighter method to apply the highlight"""
+        if not self.__spellDict:
+            return
+        
+        # Build a list of all misspelled words and highlight them
+        misspellings = []
+        for (word, pos) in self.__tokenizer(text):
+            if not self.__spellDict.check(word):
+                self.setFormat(pos, len(word), EnchantHighlighter.ErrorFormat)
+                misspellings.append((pos, pos + len(word)))
+        
+        # Store the list so the context menu can reuse this tokenization pass
+        # (Block-relative values so editing other blocks won't invalidate them)
+        data = QTextBlockUserData()
+        data.misspelled = misspellings
+        self.setCurrentBlockUserData(data)
+
+
+class EricSpellCheckedPlainTextEdit(QPlainTextEdit, SpellCheckMixin):
+    """
+    Class implementing a QPlainTextEdit with built-in spell checker.
+    """
+    def __init__(self, *args):
+        """
+        Constructor
+        
+        @param *args list of arguments for the QPlainTextEdit constructor.
+        @type list
+        """
+        QPlainTextEdit.__init__(self, *args)
+        SpellCheckMixin.__init__(self)
+
+
+class EricSpellCheckedTextEdit(QTextEdit, SpellCheckMixin):
+    """
+    Class implementing a QTextEdit with built-in spell checker.
+    """
+    def __init__(self, *args):
+        """
+        Constructor
+        
+        @param *args list of arguments for the QPlainTextEdit constructor.
+        @type list
+        """
+        QTextEdit.__init__(self, *args)
+        SpellCheckMixin.__init__(self)
+        
+        self.setFormat("html")
+    
+    def setAcceptRichText(self, accept):
+        """
+        Public method to set the text edit mode.
+        
+        @param accept flag indicating to accept rich text
+        @type bool
+        """
+        QTextEdit.setAcceptRichText(accept)
+        self.setFormat("html" if accept else "text")
+
+if __name__ == '__main__':
+    from PyQt6.QtWidgets import QApplication
+    
+    app = QApplication(sys.argv)
+    spellEdit = EricSpellCheckedPlainTextEdit()
+    spellEdit.show()
+    
+    sys.exit(app.exec())
--- a/eric7/i18n/eric7_cs.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_cs.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -51303,48 +51303,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation type="unfinished">Akce&amp;ptovat natrvalo</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation type="unfinished">Akcep&amp;tovat dočasně</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation type="unfinished">&amp;Odmítnout</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt;Zadejte uživatelské jméno a heslo pro {0}', realm '{1}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt;Zadejte uživatelské jméno a heslo pro '{0}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation type="unfinished" />
     </message>
@@ -69643,6 +69643,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">Text</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -93245,7 +93273,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -94926,15 +94954,15 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -94961,8 +94989,8 @@
       <translation type="unfinished">&lt;b&gt;Klávesové zkratky&lt;/b&gt;&lt;p&gt;Nastavení klávesových zkratek aplikace podle zvyklostí uživatele.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation type="unfinished">Exportovat klávesové zkratky</translation>
@@ -94983,7 +95011,7 @@
       <translation type="unfinished">&lt;b&gt;Export klávesových zkratek&lt;/b&gt;&lt;p&gt;Exportují se klávesové zkratky z aplikace.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -95203,128 +95231,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished">Asociovaný obsah nelze nalézt.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished">Aktualizovat index pro hledání</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished">Vyhledat dokumentaci...</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation type="unfinished">Nefiltrováno</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished">Engine nápovědy</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished">Systém</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation type="unfinished">Záložky</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation type="unfinished">&amp;Zobrazit vše</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation type="unfinished">&amp;Skrýt vše</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
Binary file eric7/i18n/eric7_de.qm has changed
--- a/eric7/i18n/eric7_de.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_de.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -48127,48 +48127,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation>SSL Zertifikatsfehler</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;Der Server &lt;b&gt;{1}&lt;/b&gt;, auf den zugegriffen werden soll, besitzt Fehler im SSL Zertifikat.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Soll eine Ausnahme erstellt werden?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation>&amp;Immer akzeptieren</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation>&amp;Vorläufig akzeptieren</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation>&amp;Ablehnen</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation>&lt;b&gt;Gib Nutzernamen und Kennwort für „{0}“ und Realm „{1}“ ein&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation>&lt;b&gt;Gib Nutzernamen und Kennwort für „{0}“ ein&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation>Authentisierung erforderlich</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation>Eine Authentisierung ist zum Zugriff auf diese URL erforderlich:</translation>
     </message>
@@ -65705,6 +65705,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation>Korrekturvorschläge</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation>Sprache</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation>Format</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation>Text</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation>HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -88860,7 +88888,7 @@
       <translation>eric Web Browser (Privater Modus)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -90541,15 +90569,15 @@
       <translation>Aktuelle Seite prüfen</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation>IP Adressenbericht</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -90576,8 +90604,8 @@
       <translation>&lt;b&gt;Tastaturkurzbefehle&lt;/b&gt;&lt;p&gt;Setze die Tastaturkurzbefehle der Applikation mit den bevorzugten Werten.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation>Tastaturkurzbefehle exportieren</translation>
@@ -90598,7 +90626,7 @@
       <translation>&lt;b&gt;Tastaturkurzbefehle exportieren&lt;/b&gt;&lt;p&gt;Exportiert die Tastaturkurzbefehle der Applikation.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation>Tastaturkurzbefehle importieren</translation>
@@ -90819,129 +90847,129 @@
 Es sind {0} Fenster mit {1} Registern offen.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation>Konnte keinen zugehörigen Inhalt finden.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation>Aktualisiere Suchindex</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation>Suche nach Dokumentation...</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation>Ungefiltert</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation>Hilfe</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation>System</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation>ISO</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation>Unicode</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation>Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation>IBM</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation>Apple</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation>Sonstige</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation>Menüleiste</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation>Lesezeichen</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation>Statusleiste</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation>Alle an&amp;zeigen</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation>Alle &amp;ausblenden</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation>VirusTotal-Prüfung</translation>
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation>VirusTotal-Prüfung</translation>
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die VirusTotal-Prüfung konnte nicht beauftragt werden.&lt;p&gt;
 &lt;p&gt;Ursache: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation>Gib eine gültige IPv4 Adresse in Vierpunktnotation ein:</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation>Die eingegebene IP Adresse ist nicht in Vierpunktnotation.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation>Gib einen gültigen Domänennamen ein:</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation>Tastaturkurzbefehlsdatei (*.ekj)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die Tastaturkurzbefehlsdatei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation>Tastaturkurzbefehlsdatei (*.ekj);;XML Tastaturkurzbefehlsdatei (*.e4k)</translation>
     </message>
--- a/eric7/i18n/eric7_empty.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_empty.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -47892,48 +47892,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation type="unfinished" />
     </message>
@@ -65261,6 +65261,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -88234,7 +88262,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -89915,15 +89943,15 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -89950,8 +89978,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -89972,7 +90000,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -90192,128 +90220,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
--- a/eric7/i18n/eric7_en.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_en.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -47930,48 +47930,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation type="unfinished" />
     </message>
@@ -65303,6 +65303,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -88281,7 +88309,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -89962,15 +89990,15 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -89997,8 +90025,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -90019,7 +90047,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -90239,128 +90267,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
--- a/eric7/i18n/eric7_es.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_es.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -48130,48 +48130,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation>Error de Certificado SSL</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;El host &lt;b&gt;{1}&lt;/b&gt; que trata de visitar tiene errores en el certificado SSL.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;¿Desea hacer una excepción?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation>Aceptar &amp;Permanentemente</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation>Aceptar &amp;temporalmente</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation>&amp;Rechazar</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation>&lt;b&gt;Introducir nombre de usuario y contraseña para '{0}', reino {1}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation>&lt;b&gt;Introducir nombre de usuario y contraseña para '{0}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation>Autenticación necesaria</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation>Es necesaria autenticación para acceder:</translation>
     </message>
@@ -65844,6 +65844,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished">Lenguaje</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">Texto</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -88988,7 +89016,7 @@
       <translation>Navegador Web de eric (Modo Privado)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -90669,15 +90697,15 @@
       <translation>Analizar sitio actual</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation>Informe de Dirección IP</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -90704,8 +90732,8 @@
       <translation>&lt;b&gt;Atajos de Teclado&lt;/b&gt;&lt;p&gt;Establezca los atajos de teclado para la aplicación con sus valores preferidos.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation>Exportar Atajos de Teclado</translation>
@@ -90726,7 +90754,7 @@
       <translation>&lt;b&gt;Exportar Atajos de Teclado&lt;/b&gt;&lt;p&gt;Exportar los atajos de teclado de la aplicación.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation>Importar Atajos de Teclado</translation>
@@ -90947,129 +90975,129 @@
 Tiene {0} ventanas con {1} pestañas abiertas.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation>No se ha podido encontrar un contenido asociado.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation>Actualizando índice de búsqueda</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation>Buscando Documentación...</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation>Sin filtrar</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation>Motor de Ayuda</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation>Sistema</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation>ISO</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation>Unicode</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation>Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation>IBM</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation>Apple</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation>Otro</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation>Barra de Menú</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation>Marcadores</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation>Barra de Estado</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation>Mo&amp;strar todo</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation>&amp;Ocultar todo</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation>Análisis con VirusTotal</translation>
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation>Análisis con VirusTotal</translation>
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation>&lt;p&gt;El análisis con VirusTotal no se ha podido programar.&lt;p&gt;
 &lt;p&gt;Razón: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation>Introducir una dirección IPv4 válida en notación decimal punteada:</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation>La dirección IP no se ha proporcionado en notación decimal punteada.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation>Introducir un nombre de dominio válido:</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation>Archivo de Atajos de Teclado (*.ekj)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;El archivo de atajos de teclado &lt;b&gt;{0}&lt;/b&gt; ya existe. ¿Sobreescribirlo?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation>Archivo de Atajos de Teclado (*.ekj);;Archivo XML de Atajos de Teclado (*.e4k)</translation>
     </message>
--- a/eric7/i18n/eric7_fr.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_fr.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -51404,48 +51404,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation>Accepter &amp;définitivement</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation>Accepter &amp;temporairement</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation>&amp;Refuser</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation>&lt;b&gt;Entrer nom d'utilisateur et mot de passe pour '{0}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation>Authentification nécessaire</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation>Une authentification est nécessaire pour l'accès :</translation>
     </message>
@@ -69937,6 +69937,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished">Langage</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">Texte</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -93624,7 +93652,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -95305,15 +95333,15 @@
       <translation>Scanner le site courant</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation>Rapport d'adresse IP</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -95340,8 +95368,8 @@
       <translation>&lt;b&gt;Raccourcis claviers&lt;/b&gt;&lt;p&gt;Edite les raccourcis claviers pour l'application.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation>Exporter les raccourcis clavier</translation>
@@ -95362,7 +95390,7 @@
       <translation>&lt;b&gt;Exporter les raccourcis clavier&lt;/b&gt;&lt;p&gt;Exporte les raccourcis claviers de l'application.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation>Importer les raccourcis clavier</translation>
@@ -95582,128 +95610,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation>non filtré</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished">Système</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation>ISO</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation>Unicode</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation>Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation>Autre</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation>Barre de menu</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation>Signets</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation>Barre de statut</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation>Tout &amp;afficher</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation>Tout &amp;masquer</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation>Scan VirusTotal</translation>
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation>Scan VirusTotal</translation>
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation>Entrer un nom de domaine valide :</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
--- a/eric7/i18n/eric7_it.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_it.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -53267,48 +53267,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation type="unfinished">Accetta &amp;Permanentemente</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation type="unfinished">Accetta &amp;Temporaneamente</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation type="unfinished">&amp;Rigetta</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt;Inserisci utente e password per '{0}', dominio '{1}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt;Inserisci utente e password per '{0}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation type="unfinished" />
     </message>
@@ -72074,6 +72074,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">Testo</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -95810,7 +95838,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -97491,15 +97519,15 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -97526,8 +97554,8 @@
       <translation type="unfinished">&lt;b&gt;Scorciatoie da tastiera&lt;/b&gt;&lt;p&gt;Imposta le scorciatoie da tastiera dell'applicazione con i valori personalizzati.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -97548,7 +97576,7 @@
       <translation type="unfinished">&lt;b&gt;Esporta scorciatoie da tastiera&lt;/b&gt;&lt;p&gt;Esporta le scorciatoie da tastiera dell'applicazione.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -97768,128 +97796,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished">Non posso trovare un contenuto associato.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished">Aggiornamento indice di ricerca</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished">Ricerca documentazione...</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation type="unfinished">Non filtrato</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished">Motore di help</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished">Sistema</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation type="unfinished">ISO</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation type="unfinished">Unicode</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation type="unfinished">Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished">IBM</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation type="unfinished">Altro</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation type="unfinished">Segnalibri</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation type="unfinished">Mo&amp;stra tutti</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation type="unfinished">Nascondi &amp;tutti</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
--- a/eric7/i18n/eric7_pt.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_pt.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -52834,48 +52834,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt;Introduzir nome de usuário e senha para '{0}, domínio '{1}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt;Introduzir nome de usuário e senha para '{0}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation type="unfinished" />
     </message>
@@ -70891,6 +70891,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">Texto</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -94308,7 +94336,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -95989,15 +96017,15 @@
       <translation type="unfinished">Analizar sítio atual</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -96024,8 +96052,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -96046,7 +96074,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation type="unfinished" />
@@ -96266,128 +96294,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished">Não se encontrou nenhum conteúdo associado.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished">A atualizar índice de pesquisa</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished">A procurar a Documentação...</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation type="unfinished">Sem filtrar</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished">Motor de Ajuda</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished">Sistema</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation type="unfinished">Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished">IBM</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation type="unfinished">Outro</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation type="unfinished">Marcadores</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation type="unfinished">&amp;Mostrar tudo</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation type="unfinished">&amp;Esconder tudo</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation type="unfinished">Análise de VirusTotal</translation>
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation type="unfinished">Análise de VirusTotal</translation>
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
--- a/eric7/i18n/eric7_ru.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_ru.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -48202,48 +48202,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation>Ошибка сертификата SSL</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;Хост &lt;b&gt;{1}&lt;/b&gt;, к которому вы пытаетесь обратиться, содержит ошибки сертификата SSL.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Хотите сделать исключение?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation>Принимать &amp;всегда</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation>Принимать вр&amp;еменно</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation>&amp;Отвергать</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation>&lt;b&gt;Введите имя пользователя и пароль для '{0}'; realm '{1}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation>&lt;b&gt;Введите имя пользователя и пароль для '{0}'&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation>Требуется аутентификация</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation>Для доступа требуется аутентификация:</translation>
     </message>
@@ -65993,6 +65993,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished">Язык</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">Текст</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -89211,7 +89239,7 @@
       <translation>eric web-браузер (приватный режим)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -90893,15 +90921,15 @@
       <translation>Проверить текущий сервер</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation>Отчет IP-адреса</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -90928,8 +90956,8 @@
       <translation>&lt;b&gt;Горячие клавиши&lt;/b&gt;&lt;p&gt;Определите горячие клавиши приложения согласно вашим предпочтениям.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation>Экспорт горячих клавиш</translation>
@@ -90951,7 +90979,7 @@
 &lt;p&gt;Экспортировать горячие клавиши приложения.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation>Импорт горячиx клавиш</translation>
@@ -91173,129 +91201,129 @@
 У вас открыты {0} окон с {1} вкладками.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation>Невозможно найти соответствующее содержание.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation>Обновление поискового индекса</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation>Идёт поиск помощи...</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation>Unfiltered</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation>Движок для системы справки</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation>Система</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation>ISO</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation>Юникод</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation>Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation>IBM</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation>Apple</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation>Другое</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation>Строка меню</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation>Закладки</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation>Строка состояния</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation>Показать &amp;всё</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation>Ск&amp;рыть всё</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation>Проверка VirusTotal</translation>
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation>Проверка VirusTotal</translation>
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Невозможно запланировать проверку VirusTotal.&lt;p&gt;
 &lt;p&gt;Причина: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation>Введите действительный адрес IPv4 в четырехкомпонентой нотации с точками:</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation>Данный IP-адрес приведен не в четырехкомпонентой нотации с точками.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation>Введите действительное имя домена:</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation>Файл горячих клавиш (*.ekj)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Файл горячих клавиш &lt;b&gt;{0}&lt;/b&gt; уже существует. Переписать?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation>Файл горячих клавиш (*.ekj);;XML-файл горячих клавиш (*.e4k)</translation>
     </message>
--- a/eric7/i18n/eric7_tr.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_tr.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -51617,48 +51617,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation type="unfinished">Sürekli kabul &amp;P</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation type="unfinished">Geçicikabul &amp;T</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation type="unfinished">&amp;Reddet</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt; '{1}' alanı, '{0}' için kullanıcı adı ve parola giriniz&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt; '{0}' için kullanıcı adını ve parolayı giriniz&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation type="unfinished" />
     </message>
@@ -69700,6 +69700,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">Metin</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -93125,7 +93153,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -94806,15 +94834,15 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -94841,8 +94869,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation type="unfinished">Kılavye Kısa Yollarını Dışa Aktar</translation>
@@ -94863,7 +94891,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation type="unfinished">Klavye kısayollarını İçe Aktar</translation>
@@ -95083,128 +95111,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished">Birleştirilmiş bir içerek bulunamadı.</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished">Arama index yenileniyor</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished">Dökümanlara bakılıyor...</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation type="unfinished">Süzülmemiş</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished">Yardım Motoru</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished">Sistem</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation type="unfinished">Evrensel kod</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation type="unfinished">Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation type="unfinished">Diğer</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation type="unfinished">Yerimleri</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation type="unfinished">Hepsini Gö&amp;ster</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation type="unfinished">&amp;Hepsini gizle</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
--- a/eric7/i18n/eric7_zh_CN.ts	Mon Jun 14 18:25:00 2021 +0200
+++ b/eric7/i18n/eric7_zh_CN.ts	Tue Jun 15 19:42:36 2021 +0200
@@ -52385,48 +52385,48 @@
   <context>
     <name>NetworkManager</name>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="199" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="194" />
       <source>SSL Certificate Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="203" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="198" />
       <source>&lt;b&gt;{0}&lt;/b&gt;&lt;p&gt;The host &lt;b&gt;{1}&lt;/b&gt; you are trying to access has errors in the SSL certificate.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{2}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Would you like to make an exception?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="210" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="205" />
       <source>&amp;Permanent accept</source>
       <translation type="unfinished">永久接受(&amp;P)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="212" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="207" />
       <source>&amp;Temporary accept</source>
       <translation type="unfinished">临时接受(&amp;T)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="214" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="209" />
       <source>&amp;Reject</source>
       <translation type="unfinished">拒绝</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="282" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="277" />
       <source>&lt;b&gt;Enter username and password for '{0}', realm '{1}'&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="285" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="280" />
       <source>&lt;b&gt;Enter username and password for '{0}'&lt;/b&gt;</source>
       <translation type="unfinished">&lt;b&gt;输入“{0}”的用户名和密码&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="335" />
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="334" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="330" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="329" />
       <source>Authentication required</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/Network/NetworkManager.py" line="338" />
+      <location filename="../WebBrowser/Network/NetworkManager.py" line="333" />
       <source>Authentication is required to access:</source>
       <translation type="unfinished" />
     </message>
@@ -71198,6 +71198,34 @@
     </message>
   </context>
   <context>
+    <name>SpellCheckMixin</name>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="106" />
+      <source>Spelling Suggestions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="131" />
+      <source>Language</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="155" />
+      <source>Format</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="161" />
+      <source>Text</source>
+      <translation type="unfinished">文本</translation>
+    </message>
+    <message>
+      <location filename="../EricWidgets/EricSpellCheckedTextEdit.py" line="163" />
+      <source>HTML</source>
+      <translation type="unfinished">HTML</translation>
+    </message>
+  </context>
+  <context>
     <name>SpellCheckingDialog</name>
     <message>
       <location filename="../QScintilla/SpellCheckingDialog.ui" line="0" />
@@ -94905,7 +94933,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3575" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3576" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2567" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="2554" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="151" />
@@ -96586,15 +96614,15 @@
       <translation type="unfinished">扫描当前站点</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4618" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4609" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1806" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1804" />
       <source>IP Address Report</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4628" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1816" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1814" />
       <source>Domain Report</source>
@@ -96621,8 +96649,8 @@
       <translation type="unfinished">&lt;b&gt;键盘快捷键&lt;/b&gt;&lt;p&gt;将程序的键盘快捷键设置成你喜欢的按键。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4997" />
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4979" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4980" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1848" />
       <source>Export Keyboard Shortcuts</source>
       <translation type="unfinished">导出键盘快捷键</translation>
@@ -96643,7 +96671,7 @@
       <translation type="unfinished">&lt;b&gt;导出键盘快捷键&lt;/b&gt;&lt;p&gt;导出程序的键盘快捷键。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5014" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5015" />
       <location filename="../WebBrowser/WebBrowserWindow.py" line="1862" />
       <source>Import Keyboard Shortcuts</source>
       <translation type="unfinished">导入键盘快捷键</translation>
@@ -96863,128 +96891,128 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3402" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3403" />
       <source>Could not find an associated content.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3491" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3492" />
       <source>Updating search index</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3564" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3565" />
       <source>Looking for Documentation...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3593" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3594" />
       <source>Unfiltered</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="3612" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="3613" />
       <source>Help Engine</source>
       <translation type="unfinished">帮助引擎</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4143" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4144" />
       <source>System</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4145" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4146" />
       <source>ISO</source>
       <translation type="unfinished">ISO</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4147" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4148" />
       <source>Unicode</source>
       <translation type="unfinished">Unicode</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4149" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4150" />
       <source>Windows</source>
       <translation type="unfinished">Windows</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4151" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4152" />
       <source>IBM</source>
       <translation type="unfinished">IBM</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4153" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4154" />
       <source>Apple</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4155" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4156" />
       <source>Other</source>
       <translation type="unfinished">其它</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4180" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4181" />
       <source>Menu Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4185" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4186" />
       <source>Bookmarks</source>
       <translation type="unfinished">书签</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4190" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4191" />
       <source>Status Bar</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4204" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4205" />
       <source>&amp;Show all</source>
       <translation type="unfinished">全部显示(&amp;S)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4206" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4207" />
       <source>&amp;Hide all</source>
       <translation type="unfinished">全部隐藏(&amp;H)</translation>
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4583" />
-      <source>VirusTotal Scan</source>
-      <translation type="unfinished">VirusTotal 扫描</translation>
-    </message>
-    <message>
       <location filename="../WebBrowser/WebBrowserWindow.py" line="4584" />
+      <source>VirusTotal Scan</source>
+      <translation type="unfinished">VirusTotal 扫描</translation>
+    </message>
+    <message>
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4585" />
       <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4610" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4611" />
       <source>Enter a valid IPv4 address in dotted quad notation:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4619" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4620" />
       <source>The given IP address is not in dotted quad notation.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4629" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4630" />
       <source>Enter a valid domain name:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4981" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4982" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="4998" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="4999" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../WebBrowser/WebBrowserWindow.py" line="5016" />
+      <location filename="../WebBrowser/WebBrowserWindow.py" line="5017" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>

eric ide

mercurial