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): """