diff options
Diffstat (limited to 'src/leap')
-rw-r--r-- | src/leap/util/translations.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/leap/util/translations.py b/src/leap/util/translations.py new file mode 100644 index 00000000..c06aa947 --- /dev/null +++ b/src/leap/util/translations.py @@ -0,0 +1,58 @@ +import inspect + +from PyQt4.QtCore import QCoreApplication + +""" +here I could not do all that I wanted. +the context is not getting passed to the xml file. +Looks like pylupdate4 is somehow a hack that does not +parse too well the python ast. +I guess we could generate the xml for ourselves as a last recourse. +""" + +# XXX BIG NOTE: +# RESIST the temptation to get the translate function +# more compact, or have the Context argument passed as a variable +# It HAS to be explicit due to how the pylupdate parser +# works. + + +qtTranslate = QCoreApplication.translate + + +class LEAPTr: + pass + + +def translate(*args): + """ + translate(Context, text, comment) + """ + print 'translating...' + klsname = None + try: + # get class value from instance + # using live object inspection + prev_frame = inspect.stack()[1][0] + self = inspect.getargvalues(prev_frame).locals.get('self') + if self: + # XXX will this work with QObject wrapper?? + if isinstance(LEAPTr, self) and hasattr(self, 'tr'): + print "we got a self in base class" + return self.tr(*args) + + # Trying to get the class name + # but this is useless, the parser + # has already got the context. + klsname = self.__class__.__name__ + print 'KLSNAME -- ', klsname + except: + print 'error getting stack frame' + + if klsname: + nargs = (klsname,) + args + return qtTranslate(*nargs) + + else: + nargs = ('default', ) + args + return qtTranslate(*nargs) |