Added actions to check the availability of the flask-babel extension and to install it.

Mon, 23 Nov 2020 19:50:07 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 23 Nov 2020 19:50:07 +0100
changeset 27
b73e9af0d496
parent 26
5aac667c4f0f
child 28
71cd3bbf825f

Added actions to check the availability of the flask-babel extension and to install it.

ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py file | annotate | diff | comparison | revisions
ProjectFlask/Project.py file | annotate | diff | comparison | revisions
ProjectFlask/i18n/flask_de.qm file | annotate | diff | comparison | revisions
ProjectFlask/i18n/flask_de.ts file | annotate | diff | comparison | revisions
ProjectFlask/i18n/flask_empty.ts file | annotate | diff | comparison | revisions
ProjectFlask/i18n/flask_en.ts file | annotate | diff | comparison | revisions
ProjectFlask/i18n/flask_es.ts file | annotate | diff | comparison | revisions
ProjectFlask/i18n/flask_ru.ts file | annotate | diff | comparison | revisions
--- a/ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py	Mon Nov 23 18:11:28 2020 +0100
+++ b/ProjectFlask/FlaskBabelExtension/PyBabelProjectExtension.py	Mon Nov 23 19:50:07 2020 +0100
@@ -68,7 +68,37 @@
             self.__configurePyBabel)
         self.actions.append(self.pybabelConfigAct)
         
-        # TODO: add action to install flask-babel
+        self.pybabelInstallAct = E5Action(
+            self.tr('Install flask-babel'),
+            self.tr('&Install flask-babel'),
+            0, 0,
+            self, 'flask_install_pybabel')
+        self.pybabelInstallAct.setStatusTip(self.tr(
+            'Installs the flask-babel extension into the configured'
+            ' environment'))
+        self.pybabelInstallAct.setWhatsThis(self.tr(
+            """<b>Install flask-babel</b>"""
+            """<p>Installs the flask-babel extension into the configured"""
+            """ environment using the pip interface.</p>"""
+        ))
+        self.pybabelInstallAct.triggered.connect(
+            self.__installFlaskBabel)
+        self.actions.append(self.pybabelInstallAct)
+        
+        self.pybabelAvailabilityAct = E5Action(
+            self.tr('Check flask-babel Availability'),
+            self.tr('&Check flask-babel Availability'),
+            0, 0,
+            self, 'flask_check_pybabel')
+        self.pybabelAvailabilityAct.setStatusTip(self.tr(
+            'Check the availability of the flask-babel extension'))
+        self.pybabelAvailabilityAct.setWhatsThis(self.tr(
+            """<b>Check flask-babel Availability</b>"""
+            """<p>Check the availability of the flask-babel extension.</p>"""
+        ))
+        self.pybabelAvailabilityAct.triggered.connect(
+            self.__checkAvailability)
+        self.actions.append(self.pybabelAvailabilityAct)
     
     def initMenu(self):
         """
@@ -81,6 +111,9 @@
         menu.setTearOffEnabled(True)
         
         menu.addAction(self.pybabelConfigAct)
+        menu.addSeparator()
+        menu.addAction(self.pybabelAvailabilityAct)
+        menu.addAction(self.pybabelInstallAct)
         
         return menu
     
@@ -171,7 +204,7 @@
         self.__project.setCapability("pybabel", available)
         
         self.pybabelConfigAct.setEnabled(available)
-        # TODO: disable install action, if flask-babel is available
+        self.pybabelInstallAct.setEnabled(not available)
     
     ##################################################################
     ## slots and methods below implement general functionality
@@ -303,6 +336,46 @@
             )
             return False
     
+    @pyqtSlot()
+    def __installFlaskBabel(self):
+        """
+        Private slot to install the flask-babel extension into the configured
+        environment.
+        """
+        language = self.__e5project.getProjectLanguage()
+        if language == "Python3":
+            venvName = self.__plugin.getPreferences(
+                "VirtualEnvironmentNamePy3")
+        else:
+            venvName = ""
+        if venvName:
+            interpreter = self.__project.getFullCommand("python")
+            pip = e5App().getObject("Pip")
+            pip.installPackages(["flask-babel"], interpreter=interpreter)
+            self.determineCapability()
+        else:
+            E5MessageBox.critical(
+                None,
+                self.tr("Install flask-babel"),
+                self.tr("The 'flask-babel' extension could not be installed"
+                        " because no virtual environment has been"
+                        " configured."))
+    
+    @pyqtSlot()
+    def __checkAvailability(self):
+        """
+        Private slot to check the availability of the 'flask-babel' extension.
+        """
+        self.determineCapability()
+        if self.__project.hasCapability("pybabel"):
+            msg = self.tr("The 'flask-babel' extension is installed.")
+        else:
+            msg = self.tr("The 'flask-babel' extension is not installed.")
+        E5MessageBox.information(
+            None,
+            self.tr("flask-babel Availability"),
+            msg)
+    
     def __getLocale(self, filename):
         """
         Private method to extract the locale out of a file name.
--- a/ProjectFlask/Project.py	Mon Nov 23 18:11:28 2020 +0100
+++ b/ProjectFlask/Project.py	Mon Nov 23 19:50:07 2020 +0100
@@ -75,7 +75,7 @@
         
         self.__capabilities = {}
         
-        self.__pybabelProject = PyBabelProject(self.__plugin, self, self.__ui)
+        self.__pybabelProject = PyBabelProject(self.__plugin, self, self)
     
     def initActions(self):
         """
Binary file ProjectFlask/i18n/flask_de.qm has changed
--- a/ProjectFlask/i18n/flask_de.ts	Mon Nov 23 18:11:28 2020 +0100
+++ b/ProjectFlask/i18n/flask_de.ts	Mon Nov 23 19:50:07 2020 +0100
@@ -475,118 +475,118 @@
 <context>
     <name>PyBabelProject</name>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="128"/>
         <source>Open with {0}</source>
         <translation>Mit {0} öffnen</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="112"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="145"/>
         <source>Extract Messages</source>
         <translation>Texte extrahieren</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="115"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="148"/>
         <source>Compile All Catalogs</source>
         <translation>Alle Kataloge übersetzen</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="118"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="151"/>
         <source>Compile Selected Catalogs</source>
         <translation>Ausgewählte Kataloge übersetzen</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="121"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="154"/>
         <source>Update All Catalogs</source>
         <translation>Alle Kataloge aktualisieren</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="124"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="157"/>
         <source>Update All Catalogs (with obsolete)</source>
         <translation>Alle Kataloge aktualisieren (mit überholten Texten)</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="127"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="160"/>
         <source>Update Selected Catalogs</source>
         <translation>Ausgewählte Kataloge aktualisieren</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="130"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="163"/>
         <source>Update Selected Catalogs (with obsolete)</source>
         <translation>Ausgewählte Kataloge aktualisieren (mit überholten Texten)</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>Generate PyBabel Configuration File</source>
         <translation>PyBabel Konfigurationsdatei erstellen</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="288"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="321"/>
         <source>The PyBabel configuration file was created. Please edit it to adjust the entries as required.</source>
         <translation>Die PyBabel Konfigurationsdatei wurde erstellt. Bitte bearbeite sie, um die Einträge an die Gegebenheiten anzupassen.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>&lt;p&gt;The PyBabel Configuration File could not be generated.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die PyBabel Konfigurationsdatei konnte nicht erstellt werden.&lt;/p&gt;&lt;p&gt;Ursache: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>Process Generation Error</source>
         <translation>Fehler bei der Prozessgenerierung</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation>Der Prozess für den Übersetzungseditor ({0}) konnte nicht gestartet werden.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="354"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="427"/>
         <source>Extract messages</source>
         <translation>Texte extrahieren</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="383"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="456"/>
         <source>
 Messages extracted successfully.</source>
         <translation>
 Texte erfolgreich extrahiert.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="399"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="472"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation>Initialisiere Textkatalog für &apos;{0}&apos;</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="418"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="491"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation>
 Textkatalog erfolgreich initialisiert.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="473"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="546"/>
         <source>Compiling message catalogs</source>
         <translation>Übersetze Textkataloge</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="502"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="575"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation>
 Textkataloge erfolgreich übersetzt.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="576"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="649"/>
         <source>No locales detected. Aborting...</source>
         <translation>Keine Sprachen erkannt. Abbruch...</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="571"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="644"/>
         <source>Updating message catalogs</source>
         <translation>Aktualisiere Textkataloge</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="604"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="677"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation>
@@ -613,10 +613,70 @@
         <translation>&lt;b&gt;PyBabel konfigurieren&lt;/b&gt;&lt;p&gt;Zeigt einen Dialog zur Konfiguration von PyBabel an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="80"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="110"/>
         <source>Translations</source>
         <translation>Übersetzungen</translation>
     </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>Install flask-babel</source>
+        <translation>flask-babel installieren</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="71"/>
+        <source>&amp;Install flask-babel</source>
+        <translation>flask-babel &amp;installieren</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="76"/>
+        <source>Installs the flask-babel extension into the configured environment</source>
+        <translation>Installiert die flask-babel Erweiterung in die konfigurierte Umgebung</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="79"/>
+        <source>&lt;b&gt;Install flask-babel&lt;/b&gt;&lt;p&gt;Installs the flask-babel extension into the configured environment using the pip interface.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;flask-babel installieren&lt;/b&gt;&lt;p&gt;Installiert die flask-babel Erweiterung in die konfigurierte Umgebung mittels der pip Schnittstelle.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>Check flask-babel Availability</source>
+        <translation>Prüfe flask-babel Verfügbarkeit</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>&amp;Check flask-babel Availability</source>
+        <translation>&amp;Prüfe flask-babel Verfügbarkeit</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="93"/>
+        <source>Check the availability of the flask-babel extension</source>
+        <translation>Prüft die Verfügbarkeit der flask-babel Erweiterung</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <source>&lt;b&gt;Check flask-babel Availability&lt;/b&gt;&lt;p&gt;Check the availability of the flask-babel extension.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Prüfe flask-babel Verfügbarkeit&lt;/b&gt;&lt;p&gt;Prüft die Verfügbarkeit der flask-babel Erweiterung.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>The &apos;flask-babel&apos; extension could not be installed because no virtual environment has been configured.</source>
+        <translation>Die &apos;flask-babel&apos; Erweiterung konnte nicht installiert werden, da keine virtuelle Umgebung konfiguriert wurde.</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="371"/>
+        <source>The &apos;flask-babel&apos; extension is installed.</source>
+        <translation>Die &apos;flask-babel&apos; Erweiterung ist installiert.</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="373"/>
+        <source>The &apos;flask-babel&apos; extension is not installed.</source>
+        <translation>Die &apos;flask-babel&apos; Erweiterung ist nicht installiert.</translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="374"/>
+        <source>flask-babel Availability</source>
+        <translation>flask-babel Verfügbarkeit</translation>
+    </message>
 </context>
 <context>
     <name>RoutesDialog</name>
--- a/ProjectFlask/i18n/flask_empty.ts	Mon Nov 23 18:11:28 2020 +0100
+++ b/ProjectFlask/i18n/flask_empty.ts	Mon Nov 23 19:50:07 2020 +0100
@@ -475,115 +475,115 @@
 <context>
     <name>PyBabelProject</name>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="128"/>
         <source>Open with {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="112"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="145"/>
         <source>Extract Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="115"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="148"/>
         <source>Compile All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="118"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="151"/>
         <source>Compile Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="121"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="154"/>
         <source>Update All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="124"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="157"/>
         <source>Update All Catalogs (with obsolete)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="127"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="160"/>
         <source>Update Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="130"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="163"/>
         <source>Update Selected Catalogs (with obsolete)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>Generate PyBabel Configuration File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="288"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="321"/>
         <source>The PyBabel configuration file was created. Please edit it to adjust the entries as required.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>&lt;p&gt;The PyBabel Configuration File could not be generated.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>Process Generation Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="354"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="427"/>
         <source>Extract messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="383"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="456"/>
         <source>
 Messages extracted successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="399"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="472"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="418"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="491"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="473"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="546"/>
         <source>Compiling message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="502"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="575"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="576"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="649"/>
         <source>No locales detected. Aborting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="571"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="644"/>
         <source>Updating message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="604"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="677"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation type="unfinished"></translation>
@@ -609,10 +609,70 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="80"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="110"/>
         <source>Translations</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="71"/>
+        <source>&amp;Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="76"/>
+        <source>Installs the flask-babel extension into the configured environment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="79"/>
+        <source>&lt;b&gt;Install flask-babel&lt;/b&gt;&lt;p&gt;Installs the flask-babel extension into the configured environment using the pip interface.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>&amp;Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="93"/>
+        <source>Check the availability of the flask-babel extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <source>&lt;b&gt;Check flask-babel Availability&lt;/b&gt;&lt;p&gt;Check the availability of the flask-babel extension.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>The &apos;flask-babel&apos; extension could not be installed because no virtual environment has been configured.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="371"/>
+        <source>The &apos;flask-babel&apos; extension is installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="373"/>
+        <source>The &apos;flask-babel&apos; extension is not installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="374"/>
+        <source>flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RoutesDialog</name>
--- a/ProjectFlask/i18n/flask_en.ts	Mon Nov 23 18:11:28 2020 +0100
+++ b/ProjectFlask/i18n/flask_en.ts	Mon Nov 23 19:50:07 2020 +0100
@@ -475,115 +475,115 @@
 <context>
     <name>PyBabelProject</name>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="128"/>
         <source>Open with {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="112"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="145"/>
         <source>Extract Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="115"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="148"/>
         <source>Compile All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="118"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="151"/>
         <source>Compile Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="121"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="154"/>
         <source>Update All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="124"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="157"/>
         <source>Update All Catalogs (with obsolete)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="127"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="160"/>
         <source>Update Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="130"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="163"/>
         <source>Update Selected Catalogs (with obsolete)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>Generate PyBabel Configuration File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="288"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="321"/>
         <source>The PyBabel configuration file was created. Please edit it to adjust the entries as required.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>&lt;p&gt;The PyBabel Configuration File could not be generated.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>Process Generation Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="354"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="427"/>
         <source>Extract messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="383"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="456"/>
         <source>
 Messages extracted successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="399"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="472"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="418"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="491"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="473"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="546"/>
         <source>Compiling message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="502"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="575"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="576"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="649"/>
         <source>No locales detected. Aborting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="571"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="644"/>
         <source>Updating message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="604"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="677"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation type="unfinished"></translation>
@@ -609,10 +609,70 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="80"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="110"/>
         <source>Translations</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="71"/>
+        <source>&amp;Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="76"/>
+        <source>Installs the flask-babel extension into the configured environment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="79"/>
+        <source>&lt;b&gt;Install flask-babel&lt;/b&gt;&lt;p&gt;Installs the flask-babel extension into the configured environment using the pip interface.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>&amp;Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="93"/>
+        <source>Check the availability of the flask-babel extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <source>&lt;b&gt;Check flask-babel Availability&lt;/b&gt;&lt;p&gt;Check the availability of the flask-babel extension.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>The &apos;flask-babel&apos; extension could not be installed because no virtual environment has been configured.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="371"/>
+        <source>The &apos;flask-babel&apos; extension is installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="373"/>
+        <source>The &apos;flask-babel&apos; extension is not installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="374"/>
+        <source>flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RoutesDialog</name>
--- a/ProjectFlask/i18n/flask_es.ts	Mon Nov 23 18:11:28 2020 +0100
+++ b/ProjectFlask/i18n/flask_es.ts	Mon Nov 23 19:50:07 2020 +0100
@@ -475,118 +475,118 @@
 <context>
     <name>PyBabelProject</name>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="128"/>
         <source>Open with {0}</source>
         <translation>Abrir con {0}</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="112"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="145"/>
         <source>Extract Messages</source>
         <translation>Extraer Mensajes</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="115"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="148"/>
         <source>Compile All Catalogs</source>
         <translation>Compilar Todos los Catálogos</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="118"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="151"/>
         <source>Compile Selected Catalogs</source>
         <translation>Compilar Catálogos Seleccionados</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="121"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="154"/>
         <source>Update All Catalogs</source>
         <translation>Actualizar Todos los Catálogos</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="124"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="157"/>
         <source>Update All Catalogs (with obsolete)</source>
         <translation>Actualizar Todos los Catálogos (con obsoletos)</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="127"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="160"/>
         <source>Update Selected Catalogs</source>
         <translation>Actualizar Catálogos Seleccionados</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="130"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="163"/>
         <source>Update Selected Catalogs (with obsolete)</source>
         <translation>Actualizar Catálogos Seleccionados (con obsoletos)</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>Generate PyBabel Configuration File</source>
         <translation>Generar Archivo de Configuración de PyBabel</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="288"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="321"/>
         <source>The PyBabel configuration file was created. Please edit it to adjust the entries as required.</source>
         <translation>Se ha creado el archivo de configuración de PyBabel. Edítelo por favor para ajustar las entradas como es requerido.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>&lt;p&gt;The PyBabel Configuration File could not be generated.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;El Archivo de Configuración de PyBabel no se ha podido generar.&lt;/p&gt;&lt;p&gt;Razón: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>Process Generation Error</source>
         <translation>Error de Generación de Proceso</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation>El proceso de editor de traducciones  ({0}) no se ha podido iniciar.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="354"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="427"/>
         <source>Extract messages</source>
         <translation>Extraer Mensajes</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="383"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="456"/>
         <source>
 Messages extracted successfully.</source>
         <translation>
 Mensajes extraídos con éxito.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="399"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="472"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation>Inicializando catálogo de mensaje para &apos;{0}&apos;</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="418"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="491"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation>
 Catálogo de mensaje inicializado con éxito.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="473"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="546"/>
         <source>Compiling message catalogs</source>
         <translation>Compilando catálogos de mensaje</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="502"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="575"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation>
 Catálogos de mensaje compilados con éxito.</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="576"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="649"/>
         <source>No locales detected. Aborting...</source>
         <translation>No se han detectado &apos;locales&apos;. Abortado...</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="571"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="644"/>
         <source>Updating message catalogs</source>
         <translation>Actualizando catálogos de mensaje</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="604"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="677"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation>
@@ -613,10 +613,70 @@
         <translation>&lt;b&gt;Configurar PyBabel&lt;/b&gt;&lt;p&gt;muestra un diálogo para editar la configuración de pybabel.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="80"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="110"/>
         <source>Translations</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="71"/>
+        <source>&amp;Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="76"/>
+        <source>Installs the flask-babel extension into the configured environment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="79"/>
+        <source>&lt;b&gt;Install flask-babel&lt;/b&gt;&lt;p&gt;Installs the flask-babel extension into the configured environment using the pip interface.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>&amp;Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="93"/>
+        <source>Check the availability of the flask-babel extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <source>&lt;b&gt;Check flask-babel Availability&lt;/b&gt;&lt;p&gt;Check the availability of the flask-babel extension.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>The &apos;flask-babel&apos; extension could not be installed because no virtual environment has been configured.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="371"/>
+        <source>The &apos;flask-babel&apos; extension is installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="373"/>
+        <source>The &apos;flask-babel&apos; extension is not installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="374"/>
+        <source>flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RoutesDialog</name>
--- a/ProjectFlask/i18n/flask_ru.ts	Mon Nov 23 18:11:28 2020 +0100
+++ b/ProjectFlask/i18n/flask_ru.ts	Mon Nov 23 19:50:07 2020 +0100
@@ -475,115 +475,115 @@
 <context>
     <name>PyBabelProject</name>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="128"/>
         <source>Open with {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="112"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="145"/>
         <source>Extract Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="115"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="148"/>
         <source>Compile All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="118"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="151"/>
         <source>Compile Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="121"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="154"/>
         <source>Update All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="124"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="157"/>
         <source>Update All Catalogs (with obsolete)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="127"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="160"/>
         <source>Update Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="130"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="163"/>
         <source>Update Selected Catalogs (with obsolete)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>Generate PyBabel Configuration File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="288"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="321"/>
         <source>The PyBabel configuration file was created. Please edit it to adjust the entries as required.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="297"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="330"/>
         <source>&lt;p&gt;The PyBabel Configuration File could not be generated.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>Process Generation Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="343"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="416"/>
         <source>The translations editor process ({0}) could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="354"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="427"/>
         <source>Extract messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="383"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="456"/>
         <source>
 Messages extracted successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="399"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="472"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="418"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="491"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="473"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="546"/>
         <source>Compiling message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="502"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="575"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="576"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="649"/>
         <source>No locales detected. Aborting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="571"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="644"/>
         <source>Updating message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="604"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="677"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation type="unfinished"></translation>
@@ -609,10 +609,70 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="80"/>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="110"/>
         <source>Translations</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="71"/>
+        <source>&amp;Install flask-babel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="76"/>
+        <source>Installs the flask-babel extension into the configured environment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="79"/>
+        <source>&lt;b&gt;Install flask-babel&lt;/b&gt;&lt;p&gt;Installs the flask-babel extension into the configured environment using the pip interface.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="88"/>
+        <source>&amp;Check flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="93"/>
+        <source>Check the availability of the flask-babel extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="95"/>
+        <source>&lt;b&gt;Check flask-babel Availability&lt;/b&gt;&lt;p&gt;Check the availability of the flask-babel extension.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="357"/>
+        <source>The &apos;flask-babel&apos; extension could not be installed because no virtual environment has been configured.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="371"/>
+        <source>The &apos;flask-babel&apos; extension is installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="373"/>
+        <source>The &apos;flask-babel&apos; extension is not installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../FlaskBabelExtension/PyBabelProjectExtension.py" line="374"/>
+        <source>flask-babel Availability</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RoutesDialog</name>

eric ide

mercurial