On Friday 03 December 2010, 12:36:44 Thorsten Kampe wrote: > Hi, > > when using other names for the self idiom referring to the current > instance (like "inst" for example - see [1]), the application is not > correctly translated. > > If I open the generated ts file in Qt Linguist it shows two > "contexts" ("MainWindow" and "inst") instead of just one > ("MainWindow) when using "self". > > The translation for the text in the script ("inst.tr('Ready')" for > example) shows still English - while the ones from the resource file > work. > > Is that a problem with pyuic or with pylupdate4? > > > Thorsten > > [1] > from PyQt4 import QtGui, QtCore > import resource.ui > > class MainWindow(QtGui.QMainWindow, resource.ui.Ui_MainWindow): > def __init__(inst): > QtGui.QMainWindow.__init__(inst) > inst.setupUi(inst) > inst.statusBar().showMessage(inst.tr('Ready'))
In short: don't. This issue is most probably due to parsing deficits in pylupdate4 (which is still C++ inherited from lupdate). Don't defy it too much.. Your best bet is to adhere to the pyuic4 standard (e.g. check resource/ui.py). In order to reduce your typing needs, it's common to add a tr method to your classes, that may look like this: def tr(self, msg): return QtGui.QApplication.translate("YourClass", msg, None, QtGui.QApplication.UnicodeUTF8) That way, you have full control, and you can be sure, that translations work in almost all contexts, which might not always be the case otherwise (e.g. to trust on QWidget's tr implementation (please correct me if I'm wrong, Phil)). Again pyqt4ref.html has a paragraph about this very topic. Pete _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt