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 listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt