I've written a program to find translation strings for PyQt. It uses python's ast module to interpret python source code. It works a bit differently to pylupdate4, as it looks for functions with a fixed contexts to do the translation.

If you'd like to try it out, it is available here:
https://github.com/jeremysanders/veusz/blob/master/scripts/pyqt_find_translatable
Click raw to get the real source code. It requires lxml and argparse (which comes with Python 2.7+).

There is some help in the source. It basically looks for functions which have disambiguation and context as optional arguments.

def trans(text, disambiguation=None, context='trans_context'):
   return QCoreApplication.translate(context, text,
                                     disambiguation=disambiguation)


After the definition in your source code (the name "_" works!) you can then call

trans("text")
trans("other text", "some disambiguation")
trans("more text", context="other_context")

To run the command line looks like:
 pyqt_find_translatable --output=file.ts --verbose *.py *.ui

It will write a new .ts file, or update an existing one, as appropriate. It will mark strings as obsolete if they do not exist in a currently processed files.

Please give any feedback and patches! One downside is that the spacing and format are a bit different to the default from linguist or pylupdate.

Jeremy

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to