Boudewijn Rempt wrote:
> 
> On Fri, 31 Aug 2001, Phil Thompson wrote:
> 
> > Boudewijn Rempt wrote:
> > >
> > > On Thursday 02 August 2001 00:31, Phil Thompson wrote:
> > > > Bryan Brunton wrote:
> > > > > (Reposting due to no response from previous post)
> > > > >
> > > > > Does anyone have the QObject.tr() method working?
> > > > >
> > > > > You can use the .qm file from the QT 2.3.1 i8ln example to test the code
> > > > > down below.  The QApplication.translate method will correctly translate.
> > > > > The tr method of the MyWidget object will not.
> > > >
> > > > Which version of PyQt? It's broken in 2.4 but should be fixed in the 2.5
> > > > pre-releases. (But note that the 2.5 releases will only compile against
> > > > Qt 2.3.1 - but that has been fixed in the CVS.)
> > > >
> > > > Phil
> > > >
> > > >
> > >
> > > I'm now also working on this topic, and I found that even with PyQt 2.5,
> > > the tr function doesn't work - a bit of a wrench, since that's the last bit
> > > I need to finish the last-but-one chapter of Part III!
> >
> > Hmm, I tested 2.5 with the test case that Bryan provided and it seemed
> > to work Ok. Do you have a test case that demonstrates the problem?
> >
> 
> I used exactly the same testcase - but did you remove the app.translate
> line? That one was meant just to show that the translate() function
> worked, but the tr not:
> 
> import sys
> from qt import *
> 
> class MyWidget(QMainWindow):
>      def __init__(self):
>           QMainWindow.__init__(self,None,'',Qt.WDestructiveClose)
>           self.setCaption( self.tr("Internationalization Example" ) );
> 
> if __name__ == '__main__':
>     a = QApplication(sys.argv)
>     QObject.connect(a,SIGNAL('lastWindowClosed()'),a,SLOT('quit()'))
> 
>     translator = QTranslator(None)
>     translator.load( "mywidget_fr.qm", "." )
>     a.installTranslator( translator )
> 
>     print(translator.contains("MyWidget", "Internationalization Example"))
>     print(QTextCodec.locale())
>     w = MyWidget()
>                 # comment this one out to actually test the problem
>     #w.setCaption(a.translate("MyWidget", "Internationalization Example"))
>     a.setMainWidget(w)
>     w.show()
>     a.exec_loop()

The equivalent C++ program (attached) does exactly the same thing - so
(if there is a bug) I'm not convinced it is with PyQt.

Phil
#include <stdio.h>
#include <qapplication.h>
#include <qtranslator.h>
#include <qmainwindow.h>


class MyWidget : public QMainWindow
{
public:
        MyWidget() : QMainWindow()
        {
                setCaption(tr("Internationalization Example"));
        }
};


int main(int argc,char **argv)
{
        QApplication *a = new QApplication(argc,argv);

        QObject::connect(a,SIGNAL(lastWindowClosed()),a,SLOT(quit()));

        QTranslator *translator = new QTranslator(a);
        translator -> load("mywidget_fr.qm",".");
        a -> installTranslator(translator);

        printf("%d\n",translator -> contains("MyWidget","Internationalization 
Example"));

        MyWidget *w = new MyWidget();
        // comment this one out to show what should happen
        //w -> setCaption(a -> translate("MyWidget","Internationalization Example"));

        a -> setMainWidget(w);
        w -> show();
        a -> exec();
}

Reply via email to