Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Trolltux от Ноябрь 06, 2005, 21:27



Название: Несколько проблем
Отправлено: Trolltux от Ноябрь 06, 2005, 21:27
1. При использовании qm не переводятся надписи виджетов формы. Хотя все остальное, что обрабатывается вручную через tr() переводится.
2. При создании нового элемента, появляется несколько пустых строк.

Плиз, гляньте сырцы: http://webfile.ru/616585


Название: Несколько проблем
Отправлено: L.Marvell от Ноябрь 07, 2005, 15:05
Из main.cpp не получилось, да и не возился я долго, т.к. в данный момент на работе. Если вписать в first_f.cpp как описано ниже, то работает:

Код:
first_f::first_f():QMainWindow(){
setupUi(this);

QTranslator *translator = new QTranslator;
translator->load("qnote_ru",  ".");
qApp->installTranslator(translator);
retranslateUi(this);
...
}

Ключевая функция - retranslateUi(). Если посмотришь в свой ui_first_f.h, то думаю разберешся зачем она нужна. (Сам недавно мучался, пока добрые люди не подсказали) ;)


Название: Несколько проблем
Отправлено: Trolltux от Ноябрь 07, 2005, 18:30
Спасибо!
Я когда ее из main вызывал она ругалась на класс QMainWindow и почему-то решил забить на нее.


Название: Несколько проблем
Отправлено: Trolltux от Ноябрь 08, 2005, 01:29
Блин, другой касяк.
Теперь гуи на русском, а MessageBox'ы на английском...


Название: Несколько проблем
Отправлено: Trolltux от Ноябрь 08, 2005, 01:43
Если сделать вот так:

Код:

int main(int argc, char **argv){
QApplication app(argc, argv);

// Установка языка gui
QTranslator translator;
if ( !translator.load("qnote_ru") )
if ( !translator.load("/usr/share/qnote/qnote_ru") )
printf("\nCannot load translate-file. Starting with english gui...\n");
else
app.installTranslator(&translator);
else
app.installTranslator(&translator);
// КБ

first_f f_w;

QObject::connect(&app, SIGNAL(lastWindowClosed()), &f_w, SLOT(exit_bClick()));

f_w.conf.initial();
f_w.conf.readData();
f_w.setViewItems();

f_w.show();
return app.exec();
}


...то  все работает.
Почему перевод в конструкторе не применяется на строки обработанные с помощью tr() в коде?


Название: Несколько проблем
Отправлено: L.Marvell от Ноябрь 08, 2005, 17:35
Цитата: "Trolltux"
Блин, другой касяк.
Теперь гуи на русском, а MessageBox'ы на английском...

Поскольку "меседжбоксы" не создавались в дизайнере, то соответственно их текст не попал в retranslateUi(). Из данной ситуации 2 выхода:
1. Грузить файл перевода из main.cpp (как ты и делаешь)
2. Создать собственную функцию аля retranslateStrings() по аналогии с retranslateUi() с текстом "меседжбоксов" и вызывать так же, как и retranslateUi()