Coverage for modules/org/openteacher/profileRunners/translationUpdater/translationUpdater : 40%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
|
#! /usr/bin/env python3 # -*- coding: utf-8 -*-
# Copyright 2012, Marten de Vries # # This file is part of OpenTeacher. # # OpenTeacher is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # OpenTeacher is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with OpenTeacher. If not, see <http://www.gnu.org/licenses/>.
"update-translations": 0, "default": -1, } self._mm.mods(type="metadata"), self._mm.mods(type="execute"), )
#save the cwd for later use startdir = os.getcwd()
for m in self._mm.mods: #generate some handy vars path = os.path.dirname(m.__class__.__file__) tpath = os.path.join(path, "translations")
#check if all the requirements for automatic translation #updates are there, and read the values of these #requirements (filename & var value). Otherwise continue. hasTranslations = os.path.isdir(tpath) if not hasTranslations: continue try: potpath = glob.glob(os.path.join(tpath, "*.pot")).pop() except IndexError: continue try: files = m.filesWithTranslations except AttributeError: print("WARNING: %s doesn't specify files to translate. Passing over." % path) continue #adjust potpath to be relative to 'path' potname = os.path.basename(potpath) newpotpath = os.path.join("translations", potname) #change cwd to path os.chdir(path) #generate the xgettext comment, that extracts strings from #source code. cmd = "xgettext --keyword=tr --force-po --add-comments=TRANSLATORS --from-code=UTF-8 --language=Python --package-name=%s --package-version=%s --msgid-bugs-address=%s --output=%s %s" % ( self._metadata["name"], self._metadata["version"], self._metadata["email"], newpotpath, " ".join(files) ) subprocess.check_call(cmd.split(" "))
nulldevice = open(os.devnull, "wb") for pofile in glob.glob(os.path.join("translations", "*.po")): #Update all .po files cmd = "msgmerge --update %s %s" % (pofile, newpotpath) subprocess.check_call(cmd.split(" "), stderr=nulldevice) mofile = os.path.splitext(pofile)[0] + ".mo" #Update all .mo files cmd = "msgfmt --output %s %s" % (mofile, pofile) subprocess.check_call(cmd.split(" ")) #reset for the next round/last time, since the module #manager and this module depend on the startdir as #reference location. os.chdir(startdir)
print("Updated translations of: %s" % path)
|