summaryrefslogtreecommitdiff
path: root/src/leap
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap')
-rw-r--r--src/leap/util/translations.py58
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)