Project/ProjectTranslationsBrowser.py

changeset 6582
d635b7e360c4
parent 6292
e08a94e1ecdd
child 6645
ad476851d7e0
diff -r 8eb6220f2bb7 -r d635b7e360c4 Project/ProjectTranslationsBrowser.py
--- a/Project/ProjectTranslationsBrowser.py	Sun Nov 04 17:20:11 2018 +0100
+++ b/Project/ProjectTranslationsBrowser.py	Sun Nov 04 18:12:25 2018 +0100
@@ -1155,13 +1155,7 @@
                     "The release of the translation files (*.qm) has failed."))
         
         for index in range(len(self.__lreleaseProcesses)):
-            if proc == self.__lreleaseProcesses[index][0]:
-                try:
-                    self.__tmpProjects.remove(
-                        self.__lreleaseProcesses[index][1])
-                    os.remove(self.__lreleaseProcesses[index][1])
-                except EnvironmentError:
-                    pass
+            if proc == self.__lreleaseProcesses[index]:
                 del self.__lreleaseProcesses[index]
                 break
         if not self.__lreleaseProcesses:
@@ -1193,16 +1187,6 @@
                 self.hooks["releaseSelected"](li)
                 return
         
-        # generate a minimal temporary projectfile suitable for lrelease
-        self.__tmpProjects = []
-        if self.project.getProjectLanguage() in \
-                ["Python", "Python2", "Python3"]:
-            ok = self.__writeTempProjectFile(langs, [".py"])
-        else:
-            ok = False
-        if not ok:
-            return
-        
         if self.project.getProjectType() in \
                 ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin",
                  "PySide", "PySideC", "PySide2", "PySideC2"]:
@@ -1214,42 +1198,53 @@
         if Utilities.isWindowsPlatform():
             lrelease = lrelease + '.exe'
         
+        if langs:
+            langs = [self.project.getRelativePath(lang.fileName())
+                     for lang in langs if lang.fileName().endswith('.ts')]
+        else:
+            try:
+                pattern = self.project.pdata["TRANSLATIONPATTERN"]\
+                    .replace("%language%", "*")
+                langs = [lang for lang in self.project.pdata["TRANSLATIONS"]
+                         if fnmatch.fnmatch(lang, pattern)]
+            except IndexError:
+                langs = []
+        if not langs:
+            E5MessageBox.warning(
+                self,
+                self.tr("Write temporary project file"),
+                self.tr("""No translation files (*.ts) selected."""))
+            return
+        
         self.__lreleaseProcesses = []
-        for tempProjectFile in self.__tmpProjects[:]:
-            proc = QProcess()
-            args = []
-
-            args.append('-verbose')
-            path, filename = os.path.split(tempProjectFile)
+        args = []
+        args.append('-verbose')
+        for langFile in langs:
+            path, filename = os.path.split(langFile)
             args.append(filename)
-            proc.setWorkingDirectory(os.path.join(self.project.ppath, path))
-            proc.finished.connect(
-                lambda c, s: self.__releaseTSFileDone(c, s, proc))
-            proc.readyReadStandardOutput.connect(
-                lambda: self.__readStdoutLrelease(proc))
-            proc.readyReadStandardError.connect(
-                lambda: self.__readStderrLrelease(proc))
-            
-            proc.start(lrelease, args)
-            procStarted = proc.waitForStarted()
-            if procStarted:
-                self.lreleaseProcRunning = True
-                self.__lreleaseProcesses.append((proc, tempProjectFile))
-            else:
-                E5MessageBox.critical(
-                    self,
-                    self.tr('Process Generation Error'),
-                    self.tr(
-                        '<p>Could not start lrelease.<br>'
-                        'Ensure that it is available as <b>{0}</b>.</p>'
-                    ).format(lrelease))
-                
-                # cleanup
-                try:
-                    self.__tmpProjects.remove(tempProjectFile)
-                    os.remove(tempProjectFile)
-                except EnvironmentError:
-                    pass
+        
+        proc = QProcess()
+        proc.setWorkingDirectory(os.path.join(self.project.ppath, path))
+        proc.finished.connect(
+            lambda c, s: self.__releaseTSFileDone(c, s, proc))
+        proc.readyReadStandardOutput.connect(
+            lambda: self.__readStdoutLrelease(proc))
+        proc.readyReadStandardError.connect(
+            lambda: self.__readStderrLrelease(proc))
+        
+        proc.start(lrelease, args)
+        procStarted = proc.waitForStarted()
+        if procStarted:
+            self.lreleaseProcRunning = True
+            self.__lreleaseProcesses.append(proc)
+        else:
+            E5MessageBox.critical(
+                self,
+                self.tr('Process Generation Error'),
+                self.tr(
+                    '<p>Could not start lrelease.<br>'
+                    'Ensure that it is available as <b>{0}</b>.</p>'
+                ).format(lrelease))
         
     def __releaseSelected(self):
         """

eric ide

mercurial