Added a menu entry to call a translations editor from the translations viewer.

Thu, 20 Jun 2013 18:59:13 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 20 Jun 2013 18:59:13 +0200
changeset 48
c313efdb01de
parent 47
5c24b24944d0
child 49
9173890edc96

Added a menu entry to call a translations editor from the translations viewer.

ChangeLog file | annotate | diff | comparison | revisions
PluginProjectPyramid.py file | annotate | diff | comparison | revisions
PluginProjectPyramid.zip file | annotate | diff | comparison | revisions
PluginPyramid.e4p file | annotate | diff | comparison | revisions
ProjectPyramid/ConfigurationPage/PyramidPage.py file | annotate | diff | comparison | revisions
ProjectPyramid/ConfigurationPage/PyramidPage.ui file | annotate | diff | comparison | revisions
ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.ConfigurationPage.PyramidPage.html file | annotate | diff | comparison | revisions
ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.Project.html file | annotate | diff | comparison | revisions
ProjectPyramid/Project.py file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_de.qm file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_de.ts file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_en.ts file | annotate | diff | comparison | revisions
ProjectPyramid/i18n/pyramid_es.ts file | annotate | diff | comparison | revisions
--- a/ChangeLog	Sun May 05 19:27:51 2013 +0200
+++ b/ChangeLog	Thu Jun 20 18:59:13 2013 +0200
@@ -1,5 +1,9 @@
 ChangeLog
 ---------
+Version 1.3.0
+- bug fixes
+- added a menu entry to call a translations editor from the translations viewer
+
 Version 1.2.0
 - bug fixes
 - extended the Python variant detection to only offer the Pyramid project type,
--- a/PluginProjectPyramid.py	Sun May 05 19:27:51 2013 +0200
+++ b/PluginProjectPyramid.py	Thu Jun 20 18:59:13 2013 +0200
@@ -26,7 +26,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "1.2.0"
+version = "1.3.0"
 className = "ProjectPyramidPlugin"
 packageName = "ProjectPyramid"
 shortDescription = "Project support for Pyramid projects."
@@ -123,6 +123,7 @@
             "Python2ConsoleType": "python",
             "Python3ConsoleType": "python",
             "PyramidDocUrl": "http://docs.pylonsproject.org/en/latest/docs/pyramid.html",
+            "TranslationsEditor": "",
         }
         if isWindowsPlatform():
             self.__defaults["ConsoleCommand"] = "cmd.exe /c"
@@ -358,6 +359,9 @@
         
         if key in ["VirtualEnvironmentPy2", "VirtualEnvironmentPy3"]:
             self.__reregisterProjectType()
+        elif key == "TranslationsEditor":
+            if self.__object:
+                self.__object.registerOpenHook()
     
     def __reregisterProjectType(self):
         """
Binary file PluginProjectPyramid.zip has changed
--- a/PluginPyramid.e4p	Sun May 05 19:27:51 2013 +0200
+++ b/PluginPyramid.e4p	Thu Jun 20 18:59:13 2013 +0200
@@ -7,7 +7,7 @@
   <ProgLanguage mixed="0">Python3</ProgLanguage>
   <ProjectType>E4Plugin</ProjectType>
   <Description>Plugin implementing support for Pyramid projects.</Description>
-  <Version>1.0.0</Version>
+  <Version>1.3.x</Version>
   <Author>Detlev Offenbach</Author>
   <Email>detlev@die-offenbachs.de</Email>
   <TranslationPattern>ProjectPyramid/i18n/pyramid_%language%.ts</TranslationPattern>
--- a/ProjectPyramid/ConfigurationPage/PyramidPage.py	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/ConfigurationPage/PyramidPage.py	Thu Jun 20 18:59:13 2013 +0200
@@ -47,6 +47,7 @@
             consoleList.append("@konsole --workdir . -e")
             # KDE4 konsole spawns
             consoleList.append("gnome-terminal -x")
+            consoleList.append("xfce4-terminal -e")
             consoleList.append("xterm -e")
         self.consoleCommandCombo.addItems(consoleList)
         
@@ -77,6 +78,9 @@
         
         self.urlEdit.setText(
             self.__plugin.getPreferences("PyramidDocUrl"))
+        
+        self.translationsEdit.setText(
+            self.__plugin.getPreferences("TranslationsEditor"))
     
     def save(self):
         """
@@ -97,6 +101,9 @@
         
         self.__plugin.setPreferences("PyramidDocUrl",
             self.urlEdit.text())
+        
+        self.__plugin.setPreferences("TranslationsEditor",
+            self.translationsEdit.text())
     
     @pyqtSlot()
     def on_virtualEnvPy3Button_clicked(self):
@@ -133,3 +140,16 @@
         
         if virtualEnv:
             self.virtualEnvPy2Edit.setText(Utilities.toNativeSeparators(virtualEnv))
+    
+    @pyqtSlot()
+    def on_translationsButton_clicked(self):
+        """
+        Private slot to select the translations editor via a file selection dialog.
+        """
+        editor = E5FileDialog.getOpenFileName(
+            self,
+            self.trUtf8("Translations Editor"),
+            self.translationsEdit.text(),
+            self.trUtf8("All Files (*)"))
+        if editor:
+            self.translationsEdit.setText(Utilities.toNativeSeparators(editor))
--- a/ProjectPyramid/ConfigurationPage/PyramidPage.ui	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/ConfigurationPage/PyramidPage.ui	Thu Jun 20 18:59:13 2013 +0200
@@ -87,6 +87,12 @@
         <layout class="QGridLayout" name="gridLayout_4">
          <item row="0" column="0" colspan="2">
           <widget class="QLabel" name="label_3">
+           <property name="minimumSize">
+            <size>
+             <width>0</width>
+             <height>40</height>
+            </size>
+           </property>
            <property name="text">
             <string>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</string>
            </property>
@@ -148,6 +154,12 @@
         <layout class="QGridLayout" name="gridLayout_2">
          <item row="0" column="0" colspan="2">
           <widget class="QLabel" name="label_7">
+           <property name="minimumSize">
+            <size>
+             <width>0</width>
+             <height>40</height>
+            </size>
+           </property>
            <property name="text">
             <string>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</string>
            </property>
@@ -219,6 +231,44 @@
     </widget>
    </item>
    <item>
+    <widget class="QGroupBox" name="TranslationsGroup">
+     <property name="title">
+      <string>Translations Editor</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_6">
+      <item row="0" column="0" colspan="2">
+       <widget class="QLabel" name="label_10">
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>40</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</string>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLineEdit" name="translationsEdit"/>
+      </item>
+      <item row="1" column="1">
+       <widget class="QPushButton" name="translationsButton">
+        <property name="toolTip">
+         <string>Select the translations editor via a file selection dialog</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <spacer name="verticalSpacer">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
--- a/ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.ConfigurationPage.PyramidPage.html	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.ConfigurationPage.PyramidPage.html	Thu Jun 20 18:59:13 2013 +0200
@@ -60,6 +60,9 @@
 <td><a href="#PyramidPage.__init__">PyramidPage</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#PyramidPage.on_translationsButton_clicked">on_translationsButton_clicked</a></td>
+<td>Private slot to select the translations editor via a file selection dialog.</td>
+</tr><tr>
 <td><a href="#PyramidPage.on_virtualEnvPy2Button_clicked">on_virtualEnvPy2Button_clicked</a></td>
 <td>Private slot to select the virtual environment for Python 2 via a directory selection dialog.</td>
 </tr><tr>
@@ -84,7 +87,12 @@
 <dd>
 reference to the plugin object
 </dd>
-</dl><a NAME="PyramidPage.on_virtualEnvPy2Button_clicked" ID="PyramidPage.on_virtualEnvPy2Button_clicked"></a>
+</dl><a NAME="PyramidPage.on_translationsButton_clicked" ID="PyramidPage.on_translationsButton_clicked"></a>
+<h4>PyramidPage.on_translationsButton_clicked</h4>
+<b>on_translationsButton_clicked</b>(<i></i>)
+<p>
+        Private slot to select the translations editor via a file selection dialog.
+</p><a NAME="PyramidPage.on_virtualEnvPy2Button_clicked" ID="PyramidPage.on_virtualEnvPy2Button_clicked"></a>
 <h4>PyramidPage.on_virtualEnvPy2Button_clicked</h4>
 <b>on_virtualEnvPy2Button_clicked</b>(<i></i>)
 <p>
--- a/ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.Project.html	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/Documentation/source/Plugin_Project_Pyramid.ProjectPyramid.Project.html	Thu Jun 20 18:59:13 2013 +0200
@@ -171,6 +171,9 @@
 <td><a href="#Project.newForm">newForm</a></td>
 <td>Public method to create a new form.</td>
 </tr><tr>
+<td><a href="#Project.openPOEditor">openPOEditor</a></td>
+<td>Public method to edit the given file in an external .po editor.</td>
+</tr><tr>
 <td><a href="#Project.projectClosed">projectClosed</a></td>
 <td>Public method to handle the closing of a project.</td>
 </tr><tr>
@@ -180,6 +183,9 @@
 <td><a href="#Project.projectOpenedHooks">projectOpenedHooks</a></td>
 <td>Public method to add our hook methods.</td>
 </tr><tr>
+<td><a href="#Project.registerOpenHook">registerOpenHook</a></td>
+<td>Public method to register the open hook to open a translations file in a translations editor.</td>
+</tr><tr>
 <td><a href="#Project.supportedPythonVariants">supportedPythonVariants</a></td>
 <td>Public method to get the supported Python variants.</td>
 </tr><tr>
@@ -548,6 +554,16 @@
 <dd>
 full directory path for the new form file (string)
 </dd>
+</dl><a NAME="Project.openPOEditor" ID="Project.openPOEditor"></a>
+<h4>Project.openPOEditor</h4>
+<b>openPOEditor</b>(<i>poFile</i>)
+<p>
+        Public method to edit the given file in an external .po editor.
+</p><dl>
+<dt><i>poFile</i></dt>
+<dd>
+name of the .po file (string)
+</dd>
 </dl><a NAME="Project.projectClosed" ID="Project.projectClosed"></a>
 <h4>Project.projectClosed</h4>
 <b>projectClosed</b>(<i></i>)
@@ -563,6 +579,12 @@
 <b>projectOpenedHooks</b>(<i></i>)
 <p>
         Public method to add our hook methods.
+</p><a NAME="Project.registerOpenHook" ID="Project.registerOpenHook"></a>
+<h4>Project.registerOpenHook</h4>
+<b>registerOpenHook</b>(<i></i>)
+<p>
+        Public method to register the open hook to open a translations file
+        in a translations editor.
 </p><a NAME="Project.supportedPythonVariants" ID="Project.supportedPythonVariants"></a>
 <h4>Project.supportedPythonVariants</h4>
 <b>supportedPythonVariants</b>(<i></i>)
--- a/ProjectPyramid/Project.py	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/Project.py	Thu Jun 20 18:59:13 2013 +0200
@@ -324,6 +324,24 @@
         self.__mainMenu = menu
         return menu
     
+    def registerOpenHook(self):
+        """
+        Public method to register the open hook to open a translations file
+        in a translations editor.
+        """
+        if self.__hooksInstalled:
+            editor = self.__plugin.getPreferences("TranslationsEditor")
+            try:
+                if editor:
+                    self.__translationsBrowser.addHookMethodAndMenuEntry("open",
+                        self.openPOEditor,
+                        self.trUtf8("Open with {0}").format(os.path.basename(editor)))
+                else:
+                    self.__translationsBrowser.removeHookMethod("open")
+            except KeyError:
+                # ignore for older eric5 versions
+                pass
+    
     def projectOpenedHooks(self):
         """
         Public method to add our hook methods.
@@ -353,6 +371,8 @@
                     self.updateSelectedCatalogs, self.trUtf8("Update Selected Catalogs"))
                 
                 self.__hooksInstalled = True
+            
+                self.registerOpenHook()
     
     def projectClosedHooks(self):
         """
@@ -369,6 +389,11 @@
             self.__translationsBrowser.removeHookMethod("releaseSelected")
             self.__translationsBrowser.removeHookMethod("generateAll")
             self.__translationsBrowser.removeHookMethod("generateSelected")
+            try:
+                self.__translationsBrowser.removeHookMethod("open")
+            except KeyError:
+                # ignore for older eric5 versions
+                pass
             self.__translationsBrowser = None
         
         self.__hooksInstalled = False
@@ -1406,3 +1431,22 @@
         res = dia.startBatchProcesses(argsLists, projectPath)
         if res:
             dia.exec_()
+    
+    def openPOEditor(self, poFile):
+        """
+        Public method to edit the given file in an external .po editor.
+        
+        @param poFile name of the .po file (string)
+        """
+        editor = self.__plugin.getPreferences("TranslationsEditor")
+        if poFile.endswith(".po") and editor:
+            try:
+                wd = self.__projectPath()
+            except PyramidNoProjectSelectedException:
+                wd = ""
+            started, pid = QProcess.startDetached(editor, [poFile], wd)
+            if not started:
+                E5MessageBox.critical(None,
+                    self.trUtf8('Process Generation Error'),
+                    self.trUtf8('The translations editor process ({0}) could not'
+                                ' be started.').format(os.path.basename(editor)))
Binary file ProjectPyramid/i18n/pyramid_de.qm has changed
--- a/ProjectPyramid/i18n/pyramid_de.ts	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/i18n/pyramid_de.ts	Thu Jun 20 18:59:13 2013 +0200
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="de_DE" sourcelanguage="">
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
 <context>
     <name>CreateParametersDialog</name>
     <message>
@@ -162,7 +163,7 @@
         <translation>&lt;b&gt;Aktuelles Pyramid Projekt&lt;/b&gt;&lt;p&gt;Wählt das Pyramid Projekt aus. Wird bei Multiprojekt Pyramid Projekten eingesetzt, um zwischen den Projekten umzuschalten.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="673"/>
+        <location filename="ProjectPyramid/Project.py" line="698"/>
         <source>Create Pyramid Project</source>
         <translation>Pyramid Projekt erstellen</translation>
     </message>
@@ -182,7 +183,7 @@
         <translation>&lt;b&gt;Pyramid Projekt erstellen&lt;/b&gt;&lt;p&gt;Erstellt ein neues Pyramid Projekt mittels &quot;pcreate&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="824"/>
+        <location filename="ProjectPyramid/Project.py" line="849"/>
         <source>Run Server</source>
         <translation>Server starten</translation>
     </message>
@@ -222,7 +223,7 @@
         <translation>&lt;b&gt;Server mit Logging starten&lt;/b&gt;&lt;p&gt;Startet den Pyramid Web Server mit Logging mittels &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="891"/>
+        <location filename="ProjectPyramid/Project.py" line="916"/>
         <source>Run Web-Browser</source>
         <translation>Web-Browser starten</translation>
     </message>
@@ -242,7 +243,7 @@
         <translation>&lt;b&gt;Web-Browser starten&lt;/b&gt;&lt;p&gt;Startet den Standard Web-Browser mit der URL des Pyramid Web-Servers.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="906"/>
+        <location filename="ProjectPyramid/Project.py" line="931"/>
         <source>Start Pyramid Python Console</source>
         <translation>Starte Pyramid Python Konsole</translation>
     </message>
@@ -262,7 +263,7 @@
         <translation>&lt;b&gt;Starte Pyramid Python Konsole&lt;/b&gt;&lt;p&gt;Startet einen interaktiven Python Interpreter&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="937"/>
+        <location filename="ProjectPyramid/Project.py" line="962"/>
         <source>Setup Development Environment</source>
         <translation>Entwicklungsumgebung einrichten</translation>
     </message>
@@ -282,7 +283,7 @@
         <translation>&lt;b&gt;Entwicklungsumgebung einrichten&lt;/b&gt;&lt;p&gt;Richtet das Pyramid Projekt im Entwicklungsmodus mittels &quot;python setup.py develop&quot; ein.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1018"/>
+        <location filename="ProjectPyramid/Project.py" line="1043"/>
         <source>Initialize Database</source>
         <translation>Datenbank initialisieren</translation>
     </message>
@@ -302,7 +303,7 @@
         <translation>&lt;b&gt;Datenbank initialisieren&lt;/b&gt;&lt;p&gt;Initialisiert (oder reinitialisiert) die Datenbank des aktuellen Pyramid Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1056"/>
+        <location filename="ProjectPyramid/Project.py" line="1081"/>
         <source>Show Matching Views</source>
         <translation>Passende Ansichten anzeigen</translation>
     </message>
@@ -322,7 +323,7 @@
         <translation>&lt;b&gt;Passende Ansichten anzeigen&lt;/b&gt;&lt;p&gt;Zeigt Ansichten zu einer gegebenen URL an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1079"/>
+        <location filename="ProjectPyramid/Project.py" line="1104"/>
         <source>Show Routes</source>
         <translation>Routen anzeigen</translation>
     </message>
@@ -342,7 +343,7 @@
         <translation>&lt;b&gt;Routen anzeigen&lt;/b&gt;&lt;p&gt;Zeigt alle durch eine Pyramid Anwendung verwendete URL Routen in der Reihenfolge ihrer Auswertung an.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1100"/>
+        <location filename="ProjectPyramid/Project.py" line="1125"/>
         <source>Show Tween Objects</source>
         <translation>Tween Objekte anzeigen</translation>
     </message>
@@ -402,7 +403,7 @@
         <translation>&lt;b&gt;Dokumentation&lt;/b&gt;&lt;p&gt;Zeigt die Hilfeanzeige mit der Pyramid Dokumentation.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="596"/>
+        <location filename="ProjectPyramid/Project.py" line="621"/>
         <source>About Pyramid</source>
         <translation>Über Pyramid</translation>
     </message>
@@ -427,192 +428,202 @@
         <translation>P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="334"/>
+        <location filename="ProjectPyramid/Project.py" line="352"/>
         <source>New template...</source>
         <translation>Neues Template...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="343"/>
+        <location filename="ProjectPyramid/Project.py" line="361"/>
         <source>Extract Messages</source>
         <translation>Texte extrahieren</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="345"/>
+        <location filename="ProjectPyramid/Project.py" line="363"/>
         <source>Compile All Catalogs</source>
         <translation>Alle Kataloge übersetzen</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="347"/>
+        <location filename="ProjectPyramid/Project.py" line="365"/>
         <source>Compile Selected Catalogs</source>
         <translation>Ausgewählte Kataloge übersetzen</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="350"/>
+        <location filename="ProjectPyramid/Project.py" line="368"/>
         <source>Update All Catalogs</source>
         <translation>Alle Kataloge aktualisieren</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="352"/>
+        <location filename="ProjectPyramid/Project.py" line="370"/>
         <source>Update Selected Catalogs</source>
         <translation>Ausgewählte Kataloge aktualisieren</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="388"/>
+        <location filename="ProjectPyramid/Project.py" line="413"/>
         <source>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Files (*.html);;HTML Files (*.htm);;All Files (*)</source>
         <translation>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Dateien (*.html);;HTML Dateien (*.htm);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="424"/>
+        <location filename="ProjectPyramid/Project.py" line="449"/>
         <source>New Form</source>
         <translation>Neues Formular</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="411"/>
+        <location filename="ProjectPyramid/Project.py" line="436"/>
         <source>The file already exists! Overwrite it?</source>
         <translation>Die Datei existiert bereits. Überschreiben?</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="424"/>
+        <location filename="ProjectPyramid/Project.py" line="449"/>
         <source>&lt;p&gt;The new form file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;br/&gt;Problem: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die neue Formulardatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht erstellt werden.&lt;br/&gt;Problem: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="731"/>
+        <location filename="ProjectPyramid/Project.py" line="756"/>
         <source>Select Pyramid Project</source>
         <translation>Pyramid Projekt auswählen</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="731"/>
+        <location filename="ProjectPyramid/Project.py" line="756"/>
         <source>Select the Pyramid project to work with.</source>
         <translation>Wähle das Pyramid Projekt aus, mit dem gearbeitet werden soll.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="769"/>
+        <location filename="ProjectPyramid/Project.py" line="794"/>
         <source>None</source>
         <translation>keines</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="772"/>
+        <location filename="ProjectPyramid/Project.py" line="797"/>
         <source>&amp;Current Pyramid Project ({0})</source>
         <translation>&amp;Aktuelles Pyramid Projekt ({0})</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1379"/>
+        <location filename="ProjectPyramid/Project.py" line="1404"/>
         <source>No current Pyramid project selected or no Pyramid project created yet. Aborting...</source>
         <translation>Kein aktuelles Pyramid Projekt ausgewählt oder noch keines erstellt. Abbruch...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="925"/>
+        <location filename="ProjectPyramid/Project.py" line="1449"/>
         <source>Process Generation Error</source>
         <translation>Fehler bei der Prozessgenerierung</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="851"/>
+        <location filename="ProjectPyramid/Project.py" line="876"/>
         <source>The Pyramid server could not be started.</source>
         <translation>Der Pyramid Server konnte nicht gestartet werden.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="891"/>
+        <location filename="ProjectPyramid/Project.py" line="916"/>
         <source>Could not start the web-browser for the URL &quot;{0}&quot;.</source>
         <translation>Der Web-Browser konnte nicht für die URL &quot;{0}&quot; gestartet werden.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="925"/>
+        <location filename="ProjectPyramid/Project.py" line="950"/>
         <source>The Pyramid Shell process could not be started.</source>
         <translation>Der Pyramid Konsolenprozess konnte nicht gestartet werden.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="952"/>
+        <location filename="ProjectPyramid/Project.py" line="977"/>
         <source>Pyramid development environment setup successfully.</source>
         <translation>Die Pyramid Entwicklungsumgebung wurde erfolgreich eingerichtet.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="966"/>
+        <location filename="ProjectPyramid/Project.py" line="991"/>
         <source>Build Distribution File</source>
         <translation>Distributionsdateien erzeugen</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="988"/>
+        <location filename="ProjectPyramid/Project.py" line="1013"/>
         <source>Python distribution file built successfully.</source>
         <translation>Python Distributionsdateien erfolgreich erzeugt.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1032"/>
+        <location filename="ProjectPyramid/Project.py" line="1057"/>
         <source>Database initialized successfully.</source>
         <translation>Datenbank erfolgreich initialisiert.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1056"/>
+        <location filename="ProjectPyramid/Project.py" line="1081"/>
         <source>Enter the URL to be matched:</source>
         <translation>Gib die zu überprüfende URL ein:</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1190"/>
+        <location filename="ProjectPyramid/Project.py" line="1215"/>
         <source>Extract messages</source>
         <translation>Texte extrahieren</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1205"/>
+        <location filename="ProjectPyramid/Project.py" line="1230"/>
         <source>
 Messages extracted successfully.</source>
         <translation>Texte erfolgreich extrahiert.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1252"/>
+        <location filename="ProjectPyramid/Project.py" line="1277"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation>
 Textkatalog erfolgreich initialisiert.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1301"/>
+        <location filename="ProjectPyramid/Project.py" line="1326"/>
         <source>Compiling message catalogs</source>
         <translation>Übersetze Textkataloge</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1330"/>
+        <location filename="ProjectPyramid/Project.py" line="1355"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation>
 Textkataloge erfolgreich übersetzt.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1399"/>
+        <location filename="ProjectPyramid/Project.py" line="1424"/>
         <source>No locales detected. Aborting...</source>
         <translation>Keine Sprachen erkannt. Abbruch...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1375"/>
+        <location filename="ProjectPyramid/Project.py" line="1400"/>
         <source>Updating message catalogs</source>
         <translation>Aktualisiere Textkataloge</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1404"/>
+        <location filename="ProjectPyramid/Project.py" line="1429"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation>
 Textkataloge erfolgreich aktualisiert.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1235"/>
+        <location filename="ProjectPyramid/Project.py" line="1260"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation>Initialisiere Textkatalog für &apos;{0}&apos;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="596"/>
+        <location filename="ProjectPyramid/Project.py" line="621"/>
         <source>&lt;p&gt;Pyramid is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Pyramid ist ein Python Web-Framework, das eine schnelle Entwicklung und ein klares, pragmatisches Design fördert.&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="ProjectPyramid/Project.py" line="336"/>
+        <source>Open with {0}</source>
+        <translation>Mit [0} öffnen</translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/Project.py" line="1449"/>
+        <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>
 </context>
 <context>
     <name>ProjectPyramidPlugin</name>
     <message>
-        <location filename="PluginProjectPyramid.py" line="382"/>
+        <location filename="PluginProjectPyramid.py" line="386"/>
         <source>Pyramid</source>
         <translation>Pyramid</translation>
     </message>
     <message>
-        <location filename="PluginProjectPyramid.py" line="161"/>
+        <location filename="PluginProjectPyramid.py" line="162"/>
         <source>eric5 version is too old, {0}, {1} or newer needed.</source>
         <translation>Die eric5 Version ist zu alt; {0}, {1} oder neuer wird benötigt.</translation>
     </message>
@@ -713,77 +724,77 @@
         <translation>Python 3</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="146"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="152"/>
         <source>Pyramid Virtual Environment</source>
         <translation>Virtuelle Pyramid Umgebung</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="152"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="164"/>
         <source>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</source>
         <translation>Gib den Pfad der virtuellen Pyramid Umgebung ein. Leer lassen, um keine virtuelle Umgebung zu verwenden.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="165"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="177"/>
         <source>Select the virtual environment directory via a selection dialog</source>
         <translation>Select the virtual environment directory via a selection dialog</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="168"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="264"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="178"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="190"/>
         <source>Pyramid Python Console:</source>
         <translation>Pyramid Python Konsole:</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="191"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="203"/>
         <source>Select the Python console type</source>
         <translation>Wähle den Typ der Python Konsole</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="140"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="146"/>
         <source>Python 2</source>
         <translation>Python 2</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="201"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="213"/>
         <source>Pyramid Documentation</source>
         <translation>Pyramid Dokumentation</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="207"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="219"/>
         <source>URL:</source>
         <translation>URL:</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="214"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="226"/>
         <source>Enter the URL of the Pyramid documentation</source>
         <translation>Gib die URL für die Pyramid Dokumentation ein</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="60"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="61"/>
         <source>Plain Python</source>
         <translation>Normales Python</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="61"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="62"/>
         <source>IPython</source>
         <translation>IPython</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="62"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="63"/>
         <source>bpython</source>
         <translation>bpython</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="110"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="117"/>
         <source>Select Virtual Environment for Python 3</source>
         <translation>Wähle die virtuelle Umgebung für Python 3</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="128"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="135"/>
         <source>Select Virtual Environment for Python 2</source>
         <translation>Wähle die virtuelle Umgebung für Python 2</translation>
     </message>
@@ -792,6 +803,26 @@
         <source>Console Command</source>
         <translation>Konsole</translation>
     </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="149"/>
+        <source>Translations Editor</source>
+        <translation>Übersetzungseditor</translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="248"/>
+        <source>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</source>
+        <translation>Gib den Pfad für einen Editor an, um Übersetzungen zu erstellen. Leer lassen, um dieses Feature abzuschalten.</translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="261"/>
+        <source>Select the translations editor via a file selection dialog</source>
+        <translation>Wähle den Übersetzungseditor über einen Auswahldialog aus</translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="149"/>
+        <source>All Files (*)</source>
+        <translation>Alle Dateien (*)</translation>
+    </message>
 </context>
 <context>
     <name>PyramidRoutesDialog</name>
--- a/ProjectPyramid/i18n/pyramid_en.ts	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/i18n/pyramid_en.ts	Thu Jun 20 18:59:13 2013 +0200
@@ -162,7 +162,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="673"/>
+        <location filename="ProjectPyramid/Project.py" line="698"/>
         <source>Create Pyramid Project</source>
         <translation type="unfinished"></translation>
     </message>
@@ -182,7 +182,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="824"/>
+        <location filename="ProjectPyramid/Project.py" line="849"/>
         <source>Run Server</source>
         <translation type="unfinished"></translation>
     </message>
@@ -222,7 +222,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="891"/>
+        <location filename="ProjectPyramid/Project.py" line="916"/>
         <source>Run Web-Browser</source>
         <translation type="unfinished"></translation>
     </message>
@@ -242,7 +242,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="906"/>
+        <location filename="ProjectPyramid/Project.py" line="931"/>
         <source>Start Pyramid Python Console</source>
         <translation type="unfinished"></translation>
     </message>
@@ -262,7 +262,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="937"/>
+        <location filename="ProjectPyramid/Project.py" line="962"/>
         <source>Setup Development Environment</source>
         <translation type="unfinished"></translation>
     </message>
@@ -282,7 +282,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1018"/>
+        <location filename="ProjectPyramid/Project.py" line="1043"/>
         <source>Initialize Database</source>
         <translation type="unfinished"></translation>
     </message>
@@ -302,7 +302,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1056"/>
+        <location filename="ProjectPyramid/Project.py" line="1081"/>
         <source>Show Matching Views</source>
         <translation type="unfinished"></translation>
     </message>
@@ -322,7 +322,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1079"/>
+        <location filename="ProjectPyramid/Project.py" line="1104"/>
         <source>Show Routes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -342,7 +342,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1100"/>
+        <location filename="ProjectPyramid/Project.py" line="1125"/>
         <source>Show Tween Objects</source>
         <translation type="unfinished"></translation>
     </message>
@@ -402,7 +402,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="596"/>
+        <location filename="ProjectPyramid/Project.py" line="621"/>
         <source>About Pyramid</source>
         <translation type="unfinished"></translation>
     </message>
@@ -427,189 +427,199 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="334"/>
+        <location filename="ProjectPyramid/Project.py" line="352"/>
         <source>New template...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="343"/>
+        <location filename="ProjectPyramid/Project.py" line="361"/>
         <source>Extract Messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="345"/>
+        <location filename="ProjectPyramid/Project.py" line="363"/>
         <source>Compile All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="347"/>
+        <location filename="ProjectPyramid/Project.py" line="365"/>
         <source>Compile Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="350"/>
+        <location filename="ProjectPyramid/Project.py" line="368"/>
         <source>Update All Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="352"/>
+        <location filename="ProjectPyramid/Project.py" line="370"/>
         <source>Update Selected Catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="388"/>
+        <location filename="ProjectPyramid/Project.py" line="413"/>
         <source>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Files (*.html);;HTML Files (*.htm);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="424"/>
+        <location filename="ProjectPyramid/Project.py" line="449"/>
         <source>New Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="411"/>
+        <location filename="ProjectPyramid/Project.py" line="436"/>
         <source>The file already exists! Overwrite it?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="424"/>
+        <location filename="ProjectPyramid/Project.py" line="449"/>
         <source>&lt;p&gt;The new form file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;br/&gt;Problem: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="731"/>
+        <location filename="ProjectPyramid/Project.py" line="756"/>
         <source>Select Pyramid Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="731"/>
+        <location filename="ProjectPyramid/Project.py" line="756"/>
         <source>Select the Pyramid project to work with.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="769"/>
+        <location filename="ProjectPyramid/Project.py" line="794"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="772"/>
+        <location filename="ProjectPyramid/Project.py" line="797"/>
         <source>&amp;Current Pyramid Project ({0})</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1379"/>
+        <location filename="ProjectPyramid/Project.py" line="1404"/>
         <source>No current Pyramid project selected or no Pyramid project created yet. Aborting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="925"/>
+        <location filename="ProjectPyramid/Project.py" line="1449"/>
         <source>Process Generation Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="851"/>
+        <location filename="ProjectPyramid/Project.py" line="876"/>
         <source>The Pyramid server could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="891"/>
+        <location filename="ProjectPyramid/Project.py" line="916"/>
         <source>Could not start the web-browser for the URL &quot;{0}&quot;.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="925"/>
+        <location filename="ProjectPyramid/Project.py" line="950"/>
         <source>The Pyramid Shell process could not be started.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="952"/>
+        <location filename="ProjectPyramid/Project.py" line="977"/>
         <source>Pyramid development environment setup successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="966"/>
+        <location filename="ProjectPyramid/Project.py" line="991"/>
         <source>Build Distribution File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="988"/>
+        <location filename="ProjectPyramid/Project.py" line="1013"/>
         <source>Python distribution file built successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1032"/>
+        <location filename="ProjectPyramid/Project.py" line="1057"/>
         <source>Database initialized successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1056"/>
+        <location filename="ProjectPyramid/Project.py" line="1081"/>
         <source>Enter the URL to be matched:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1190"/>
+        <location filename="ProjectPyramid/Project.py" line="1215"/>
         <source>Extract messages</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1205"/>
+        <location filename="ProjectPyramid/Project.py" line="1230"/>
         <source>
 Messages extracted successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1252"/>
+        <location filename="ProjectPyramid/Project.py" line="1277"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1301"/>
+        <location filename="ProjectPyramid/Project.py" line="1326"/>
         <source>Compiling message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1330"/>
+        <location filename="ProjectPyramid/Project.py" line="1355"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1399"/>
+        <location filename="ProjectPyramid/Project.py" line="1424"/>
         <source>No locales detected. Aborting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1375"/>
+        <location filename="ProjectPyramid/Project.py" line="1400"/>
         <source>Updating message catalogs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1404"/>
+        <location filename="ProjectPyramid/Project.py" line="1429"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1235"/>
+        <location filename="ProjectPyramid/Project.py" line="1260"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="596"/>
+        <location filename="ProjectPyramid/Project.py" line="621"/>
         <source>&lt;p&gt;Pyramid is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="ProjectPyramid/Project.py" line="336"/>
+        <source>Open with {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/Project.py" line="1449"/>
+        <source>The translations editor process ({0}) could not be started.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProjectPyramidPlugin</name>
     <message>
-        <location filename="PluginProjectPyramid.py" line="382"/>
+        <location filename="PluginProjectPyramid.py" line="386"/>
         <source>Pyramid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="PluginProjectPyramid.py" line="161"/>
+        <location filename="PluginProjectPyramid.py" line="162"/>
         <source>eric5 version is too old, {0}, {1} or newer needed.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -710,77 +720,77 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="146"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="152"/>
         <source>Pyramid Virtual Environment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="152"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="164"/>
         <source>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="165"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="177"/>
         <source>Select the virtual environment directory via a selection dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="168"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="264"/>
         <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="178"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="190"/>
         <source>Pyramid Python Console:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="191"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="203"/>
         <source>Select the Python console type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="140"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="146"/>
         <source>Python 2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="201"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="213"/>
         <source>Pyramid Documentation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="207"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="219"/>
         <source>URL:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="214"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="226"/>
         <source>Enter the URL of the Pyramid documentation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="60"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="61"/>
         <source>Plain Python</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="61"/>
-        <source>IPython</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="62"/>
+        <source>IPython</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="63"/>
         <source>bpython</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="110"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="117"/>
         <source>Select Virtual Environment for Python 3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="128"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="135"/>
         <source>Select Virtual Environment for Python 2</source>
         <translation type="unfinished"></translation>
     </message>
@@ -789,6 +799,26 @@
         <source>Console Command</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="149"/>
+        <source>Translations Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="248"/>
+        <source>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="261"/>
+        <source>Select the translations editor via a file selection dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="149"/>
+        <source>All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PyramidRoutesDialog</name>
--- a/ProjectPyramid/i18n/pyramid_es.ts	Sun May 05 19:27:51 2013 +0200
+++ b/ProjectPyramid/i18n/pyramid_es.ts	Thu Jun 20 18:59:13 2013 +0200
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="es_ES">
+<!DOCTYPE TS><TS version="2.0" language="es_ES" sourcelanguage="">
 <context>
     <name>CreateParametersDialog</name>
     <message>
@@ -163,7 +162,7 @@
         <translation>&lt;b&gt;Proyecto Pyramid Actual&lt;/b&gt;&lt;p&gt;Seleciona el proyecto Pyramid. Se utiliza en proyectos Pyramid multi-proyecto Pyramid projects para cambiar entre proyectos.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="673"/>
+        <location filename="ProjectPyramid/Project.py" line="698"/>
         <source>Create Pyramid Project</source>
         <translation>Crear Proyecto Pyramid</translation>
     </message>
@@ -183,7 +182,7 @@
         <translation>&lt;b&gt;Crear Proyecto Pyramid &lt;/b&gt;&lt;p&gt;Crea un nuevo proyecto Pyramid usando &quot;pcreate&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="824"/>
+        <location filename="ProjectPyramid/Project.py" line="849"/>
         <source>Run Server</source>
         <translation>Lanzar Servidor</translation>
     </message>
@@ -223,7 +222,7 @@
         <translation>&lt;b&gt;Lanzar Servidor con Log&lt;/b&gt;&lt;p&gt;Inicia el servidor Web de Pyramid con log usando &quot;pserve --log-file=server.log --reload development.ini&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="891"/>
+        <location filename="ProjectPyramid/Project.py" line="916"/>
         <source>Run Web-Browser</source>
         <translation>Lanzar Navegador Web</translation>
     </message>
@@ -243,7 +242,7 @@
         <translation>&lt;b&gt;Lanzar Navegador Web&lt;/b&gt;&lt;p&gt;Inicia el Navegador Web por defecto con la URL del servidor Web de Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="906"/>
+        <location filename="ProjectPyramid/Project.py" line="931"/>
         <source>Start Pyramid Python Console</source>
         <translation>Iniciar Consola Python de Pyramid</translation>
     </message>
@@ -263,7 +262,7 @@
         <translation>&lt;b&gt;Iniciar Consola Python de Pyramid&lt;/b&gt;&lt;p&gt;Inicia un intérprete interactivo de Python.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="937"/>
+        <location filename="ProjectPyramid/Project.py" line="962"/>
         <source>Setup Development Environment</source>
         <translation>Configurar Entorno de Desarrollo</translation>
     </message>
@@ -283,7 +282,7 @@
         <translation>&lt;b&gt;Configurar Entorno de Desarrollo&lt;/b&gt;&lt;p&gt;Configurar el proyecto Pyramid en modo de desarrollo usando &quot;python setup.py develop&quot;.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1018"/>
+        <location filename="ProjectPyramid/Project.py" line="1043"/>
         <source>Initialize Database</source>
         <translation>Inicializar Base de Datos</translation>
     </message>
@@ -303,7 +302,7 @@
         <translation>&lt;b&gt;Inicializar Base de Datos&lt;/b&gt;&lt;p&gt;Inicializa (o reinicializa) la base de datos del proyecto Pyramid actual.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1056"/>
+        <location filename="ProjectPyramid/Project.py" line="1081"/>
         <source>Show Matching Views</source>
         <translation>Mostrar Vistas Concordantes</translation>
     </message>
@@ -323,7 +322,7 @@
         <translation>&lt;b&gt;Mostrar Vistas Concordantes&lt;/b&gt;&lt;p&gt;Mostrar vistas que concuerdan con una URL dada.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1079"/>
+        <location filename="ProjectPyramid/Project.py" line="1104"/>
         <source>Show Routes</source>
         <translation>Mostrar Rutas</translation>
     </message>
@@ -343,7 +342,7 @@
         <translation>&lt;b&gt;Mostrar Rutas&lt;/b&gt;&lt;p&gt;Mostrar todas las rutas URL de despacho usadas por una aplicación Pyramid en el orden en que son evaluadas.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1100"/>
+        <location filename="ProjectPyramid/Project.py" line="1125"/>
         <source>Show Tween Objects</source>
         <translation>Mostrar Objetos Gemelos</translation>
     </message>
@@ -403,7 +402,7 @@
         <translation>&lt;b&gt;Documentación&lt;/b&gt;&lt;p&gt;Muestra el visor de ayuda con la documentación de Pyramid.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="596"/>
+        <location filename="ProjectPyramid/Project.py" line="621"/>
         <source>About Pyramid</source>
         <translation>Acerca de Pyramid</translation>
     </message>
@@ -428,52 +427,52 @@
         <translation>P&amp;yramid</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="334"/>
+        <location filename="ProjectPyramid/Project.py" line="352"/>
         <source>New template...</source>
         <translation>Nueva Plantilla...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="343"/>
+        <location filename="ProjectPyramid/Project.py" line="361"/>
         <source>Extract Messages</source>
         <translation>Extraer Mensajes</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="345"/>
+        <location filename="ProjectPyramid/Project.py" line="363"/>
         <source>Compile All Catalogs</source>
         <translation>Compilar Todos los Catálogos</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="347"/>
+        <location filename="ProjectPyramid/Project.py" line="365"/>
         <source>Compile Selected Catalogs</source>
         <translation>Compilar Catálogos Seleccionados</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="350"/>
+        <location filename="ProjectPyramid/Project.py" line="368"/>
         <source>Update All Catalogs</source>
         <translation>Actualizar Todos los Catálogos</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="352"/>
+        <location filename="ProjectPyramid/Project.py" line="370"/>
         <source>Update Selected Catalogs</source>
         <translation>Actualizar Catálogos Seleccionados</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="388"/>
+        <location filename="ProjectPyramid/Project.py" line="413"/>
         <source>Chameleon Templates (*.pt);;Chameleon Text Templates (*.txt);;Mako Templates (*.mako);;Mako Templates (*.mak);;HTML Files (*.html);;HTML Files (*.htm);;All Files (*)</source>
         <translation>Plantillas Chameleon (*.pt);;Plantillas de Texto Chameleon (*.txt);;Plantillas Mako (*.mako);;Plantillas Mako (*.mak);;Archivos HTML (*.html);;Archivos HTML (*.htm);;Todos los Archivos (*)</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="424"/>
+        <location filename="ProjectPyramid/Project.py" line="449"/>
         <source>New Form</source>
         <translation>Nuevo Formulario</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="411"/>
+        <location filename="ProjectPyramid/Project.py" line="436"/>
         <source>The file already exists! Overwrite it?</source>
         <translation>¡El archivo ya existe!¿Sobreescribirlo?</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="424"/>
+        <location filename="ProjectPyramid/Project.py" line="449"/>
         <source>&lt;p&gt;The new form file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;br/&gt;Problem: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;No ha podido crearse el nuevo archivo de formulario &lt;b&gt;{0}&lt;/b&gt;.&lt;br/&gt;Problema: {1}&lt;/p&gt;</translation>
     </message>
@@ -483,140 +482,150 @@
         <translation type="obsolete">&lt;p&gt;Pyramid es un framework Web de alto nivel para Python que promueve desarrollo rápido, y diseño pragmático y limpio.&lt;/p&gt;&lt;p&gt;URL: &lt;a href=&quot;{0}&quot;&gt;{0}&lt;/a&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="731"/>
+        <location filename="ProjectPyramid/Project.py" line="756"/>
         <source>Select Pyramid Project</source>
         <translation>Seleccionar Proyecto Pyramid</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="731"/>
+        <location filename="ProjectPyramid/Project.py" line="756"/>
         <source>Select the Pyramid project to work with.</source>
         <translation>Seleccionar el proyecto Pyramid con el que trabajar.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="769"/>
+        <location filename="ProjectPyramid/Project.py" line="794"/>
         <source>None</source>
         <translation>Ninguno</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="772"/>
+        <location filename="ProjectPyramid/Project.py" line="797"/>
         <source>&amp;Current Pyramid Project ({0})</source>
         <translation>Proyecto Pyramid A&amp;ctual ({0})</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1379"/>
+        <location filename="ProjectPyramid/Project.py" line="1404"/>
         <source>No current Pyramid project selected or no Pyramid project created yet. Aborting...</source>
         <translation>No se ha seleccionado proyecto Pyramid actual o no hay creado todavía ningún proyecto Pyramid. Abortando...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="925"/>
+        <location filename="ProjectPyramid/Project.py" line="1449"/>
         <source>Process Generation Error</source>
         <translation>Error de Generación de Proceso</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="851"/>
+        <location filename="ProjectPyramid/Project.py" line="876"/>
         <source>The Pyramid server could not be started.</source>
         <translation>No se ha podido iniciar el servidor de Pyramid.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="891"/>
+        <location filename="ProjectPyramid/Project.py" line="916"/>
         <source>Could not start the web-browser for the URL &quot;{0}&quot;.</source>
         <translation>No se ha podido inicialr el navegador web para la URL &quot;{0}&quot;.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="925"/>
+        <location filename="ProjectPyramid/Project.py" line="950"/>
         <source>The Pyramid Shell process could not be started.</source>
         <translation>No se ha podido iniciar el proceso Shell de Pyramid.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="952"/>
+        <location filename="ProjectPyramid/Project.py" line="977"/>
         <source>Pyramid development environment setup successfully.</source>
         <translation>Entorno de desarrollo de Pyramid configurado con éxito.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="966"/>
+        <location filename="ProjectPyramid/Project.py" line="991"/>
         <source>Build Distribution File</source>
         <translation>Construir Archivo de Distribución</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="988"/>
+        <location filename="ProjectPyramid/Project.py" line="1013"/>
         <source>Python distribution file built successfully.</source>
         <translation>Archivo de distribución Python construido con éxito.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1032"/>
+        <location filename="ProjectPyramid/Project.py" line="1057"/>
         <source>Database initialized successfully.</source>
         <translation>Base de Datos inicializada con éxito.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1056"/>
+        <location filename="ProjectPyramid/Project.py" line="1081"/>
         <source>Enter the URL to be matched:</source>
         <translation>Introducir la URL a ser concordada:</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1190"/>
+        <location filename="ProjectPyramid/Project.py" line="1215"/>
         <source>Extract messages</source>
         <translation>Extraer mensajes</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1205"/>
+        <location filename="ProjectPyramid/Project.py" line="1230"/>
         <source>
 Messages extracted successfully.</source>
         <translation>Mensajes extraídos con éxito.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1252"/>
+        <location filename="ProjectPyramid/Project.py" line="1277"/>
         <source>
 Message catalog initialized successfully.</source>
         <translation>Catálogo de Mensajes inicializado con éxito.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1301"/>
+        <location filename="ProjectPyramid/Project.py" line="1326"/>
         <source>Compiling message catalogs</source>
         <translation>Compilando catálogos de mensajes</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1330"/>
+        <location filename="ProjectPyramid/Project.py" line="1355"/>
         <source>
 Message catalogs compiled successfully.</source>
         <translation>Catálogo de Mensajes compilado con éxito.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1399"/>
+        <location filename="ProjectPyramid/Project.py" line="1424"/>
         <source>No locales detected. Aborting...</source>
         <translation>No se han detectado traducciones. Abortando...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1375"/>
+        <location filename="ProjectPyramid/Project.py" line="1400"/>
         <source>Updating message catalogs</source>
         <translation>Actualizando catálogos de mensajes</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1404"/>
+        <location filename="ProjectPyramid/Project.py" line="1429"/>
         <source>
 Message catalogs updated successfully.</source>
         <translation>Catálogo de Mensajes actualizado con éxito.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="1235"/>
+        <location filename="ProjectPyramid/Project.py" line="1260"/>
         <source>Initializing message catalog for &apos;{0}&apos;</source>
         <translation>Inicializando catálogo de mensajes para &apos;{0}&apos;</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/Project.py" line="596"/>
+        <location filename="ProjectPyramid/Project.py" line="621"/>
         <source>&lt;p&gt;Pyramid is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Version:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
         <translation>&lt;p&gt;Pyramid es un framework Web de alto nivel para Python que promueve desarrollo rápido, y diseño pragmático
  y limpio.&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Versión:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL:&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="ProjectPyramid/Project.py" line="336"/>
+        <source>Open with {0}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/Project.py" line="1449"/>
+        <source>The translations editor process ({0}) could not be started.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProjectPyramidPlugin</name>
     <message>
-        <location filename="PluginProjectPyramid.py" line="382"/>
+        <location filename="PluginProjectPyramid.py" line="386"/>
         <source>Pyramid</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="PluginProjectPyramid.py" line="161"/>
+        <location filename="PluginProjectPyramid.py" line="162"/>
         <source>eric5 version is too old, {0}, {1} or newer needed.</source>
         <translation>La versión de eric5 es demasiado antigua, {0}, es necesaria {1} o más reciente .</translation>
     </message>
@@ -717,77 +726,77 @@
         <translation>Python 3</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="146"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="152"/>
         <source>Pyramid Virtual Environment</source>
         <translation>Entorno Virtual de Pyramid</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="152"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="164"/>
         <source>Enter the path of the Pyramid virtual environment. Leave empty to not use a virtual environment setup.</source>
         <translation>Introducir la ruta del entorno virtual de Pyramid. Dejar vacío para no utilizar una configuración de entorno virtual.</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="165"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="177"/>
         <source>Select the virtual environment directory via a selection dialog</source>
         <translation>Seleccionar el directorio de entorno virtual a través de un diálogo de selección</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="168"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="264"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="178"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="190"/>
         <source>Pyramid Python Console:</source>
         <translation>Consola Python de Pyramid:</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="191"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="203"/>
         <source>Select the Python console type</source>
         <translation>Seleccionar el tipo de consola de Python</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="140"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="146"/>
         <source>Python 2</source>
         <translation>Python 2</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="201"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="213"/>
         <source>Pyramid Documentation</source>
         <translation>Documentación de Pyramid</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="207"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="219"/>
         <source>URL:</source>
         <translation>URL:</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="214"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="226"/>
         <source>Enter the URL of the Pyramid documentation</source>
         <translation>Introducir la URL de la documentación de Pyramid</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="60"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="61"/>
         <source>Plain Python</source>
         <translation>Python normal</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="61"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="62"/>
         <source>IPython</source>
         <translation>IPython</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="62"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="63"/>
         <source>bpython</source>
         <translation>bpython</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="110"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="117"/>
         <source>Select Virtual Environment for Python 3</source>
         <translation>Seleccionar Entorno Virtual para Python 3</translation>
     </message>
     <message>
-        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="128"/>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="135"/>
         <source>Select Virtual Environment for Python 2</source>
         <translation>Seleccionar Entorno Virtual para Python 2</translation>
     </message>
@@ -796,6 +805,26 @@
         <source>Console Command</source>
         <translation>Comando de Consola</translation>
     </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="149"/>
+        <source>Translations Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="248"/>
+        <source>Enter the path of an editor to use to do the translations. Leave empty to disable this feature.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.ui" line="261"/>
+        <source>Select the translations editor via a file selection dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="ProjectPyramid/ConfigurationPage/PyramidPage.py" line="149"/>
+        <source>All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PyramidRoutesDialog</name>

eric ide

mercurial