[PyQt] i18n

Doug Bell dougb at bellz.org
Wed Feb 11 16:18:33 GMT 2009

Frédéric wrote:
> Does anybody could point me on example how to use i18n in PyQt?
> Riverbank documentation says that one should not use tr() method, but
> insteead QtCore.QCoreApplication.translate(). As the object must be
> passed to this method, this not improves the readability :o/
> Are there some tips, for example, to bind the _() method I use with
> gettext and PyGTK? Something to help me migrate my code without having
> to modify it everywhere...

Here's how I do it:

    def translate(text, comment=''):
        """Translation function that sets context to calling module's
            frame = sys._getframe(1)
            fileName = frame.f_code.co_filename
            del frame
        context = os.path.basename(os.path.splitext(fileName)[0])
        return unicode(QtCore.QCoreApplication.translate(context, text,

    def markNoTranslate(text, comment=''):
        """Mark text for translation without actually doing the
        return text

    __builtin__._ = translate
    __builtin__.N_ = markNoTranslate

> Are there also some tools to migrate a .po file to a Qt i18n stuff?

I don't know.


More information about the PyQt mailing list