QTranslator работает только в некоторых частях моей программы

У меня странная проблема с переводом моего приложения qt (qt 4.7.4 в Windows). Происходит следующее:

1.- Я запускаю lupdate и создаю файл .ts.

2.- Я редактирую сгенерированный файл .ts с помощью qt-лингвиста.

3. Я запускаю lrelease с предыдущим файлом .ts.

4.- Из Netbeans я очищаю и создаю проект, а затем запускаю его.

Когда мое приложение запускается, большинство виджетов (метки, кнопки, заголовки, действия меню, меню) переводятся в соответствии с файлом перевода, который я создал ранее. Проблема в том, что некоторые элементы не переводятся, хотя я предоставил для них перевод в файле перевода (Qt Linguist их распознал).

Мой вопрос: есть ли причина, по которой одни тексты переводятся, а другие игнорируются?

Я убедился, что каждый текст находится внутри tr(). (Как я уже говорил, все они появляются в Qt Linguist).

Спасибо за помощь.


person acerqueiro    schedule 21.08.2012    source источник
comment
А также вы убедились, что каждое вхождение tr вызывается после установки транслятора?   -  person Kamil Klimek    schedule 22.08.2012
comment
Привет @KamilKlimek, переводчик установлен в основной функции. После вызова переводчика я вызываю свой класс mainWindow, и здесь все терпит неудачу, QMainWindow не переводится: остальная часть приложения переводится. я не знаю в чем проблема   -  person acerqueiro    schedule 23.08.2012
comment
Вы должны предоставить нам минимальный пример кода, который воспроизводит вашу проблему.   -  person Kamil Klimek    schedule 24.08.2012


Ответы (1)


так что у меня это работает только для Linux, а не для mingw32/mingw64.

main.cpp

#include <QtGui/QApplication>
#include "test_w32.h"
#include <QTranslator>
#include <QLocale>


int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QString locale = QLocale::system().name();
    QTranslator translator;
    translator.load(QString("test_w32_") +locale);
    app.installTranslator(&translator);
    test_w32 foo;
    foo.show();
    return app.exec();
}

test_w32.h

#ifndef test_w32_H
#define test_w32_H

#include <QtGui/QMainWindow>

class test_w32 : public QMainWindow
{
Q_OBJECT
public:
    test_w32();
    virtual ~test_w32();
};

#endif // test_w32_H

test_w32.cpp

#include "test_w32.h"

#include <QtGui/QLabel>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QAction>


test_w32::test_w32()
{
    QLabel* l = new QLabel( this );
    l->setText(trUtf8( "Hello World!" ));
    setCentralWidget( l );
    QAction* a = new QAction(this);
    a->setText(trUtf8( "Quit" ));
    connect(a, SIGNAL(triggered()), SLOT(close()) );
    menuBar()->addMenu(trUtf8( "File" ))->addAction( a );
}

test_w32::~test_w32()
{}

#include "test_w32.moc"

В чем проблема ? Спасибо

person user2567493    schedule 10.07.2013