Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt инструментарий _ Мультиязычность для готовых форм .ui

Автор: AzateQ 16.4.2011, 22:54

Никак не могу разобраться с тем, как выводить готовые формы переведенными...
Создаю в Qt Creator проект, ничего не добавляю, просто пустое окно.
Редактирую .pro, добавляя TRANSLATIONS ..._ru.ts
Запускаю lupdate, а потом открываю сгенерированный файл в Linguist'е. Он, понятное дело, находить только MainWindow, перевожу его, при этом Linguist в окне "Исходники и формы" корректно отображает имя формы на русском языке...
Далее запускаю lrelease, и устанавливаю перевод в main.cpp, потом, как я понимаю, надо подредактировать конструктор, чтобы окно переведенным выходило, но что там писать, я так и не додумался.
Если не использовать .ui все работает, но хотелось бы научиться делать это еще и используя Designer...
Может я в поисковиках какие-то неправильные запросы ввожу, но ничего толкового на эту тему не нашел... Да и вообще, кругом копипасты немногочисленной информации о работах с формами, зато материалов про добавление виджетов через код пруд пруди... Полистал Шлее, полистал стандартную справку, но ничего полезного так и не нашел...
Надеюсь, что хоть тут помогут.

Автор: Litkevich Yuriy 16.4.2011, 23:29

Цитата(AzateQ @ 17.4.2011, 1:54) *
и устанавливаю перевод в main.cpp
как устанавливаешь?
Цитата(AzateQ @ 17.4.2011, 1:54) *
потом, как я понимаю, надо подредактировать конструктор
ничего не надо, где ты такое прочитал?

Цитата(AzateQ @ 17.4.2011, 1:54) *
Может я в поисковиках какие-то неправильные запросы ввожу, но ничего толкового на эту тему не нашел.
надо в Асистент смотреть, там всё есть

Автор: AzateQ 17.4.2011, 0:37

Цитата(Litkevich Yuriy @ 17.4.2011, 0:29) *
как устанавливаешь?

QApplication a(argc, argv);
QTranslator tran;
tran.load("..._ru");
a.installTranslator(&tran);

Автор: Litkevich Yuriy 17.4.2011, 1:44

Цитата(AzateQ @ 17.4.2011, 3:37) *
tran.load("..._ru");
что возвращает?

Автор: AzateQ 17.4.2011, 11:05

Цитата(Litkevich Yuriy @ 17.4.2011, 2:44) *
что возвращает?

Ну, видимо ссылку на файл ..._ru.qm, который лежит в папке проекта.
Потом через installTranslator он устанавливается.
И тут внезапно вызывается MainWindow, но без каких-либо указаний на необходимость перевести его...

QApplication a(argc, argv);
QTranslator tran;
tran.load("..._ru");
a.installTranslator(&tran);
MainWindow w;
w.show();
return a.exec();

И у меня абсолютно никаких мыслей по поводу того, что надо там подправить...

Автор: RazrFalcon 17.4.2011, 18:48

Та же проблема. Как ни пробовал, все равно не подхватывается локализация.
Подключал также как и выше.

Автор: Litkevich Yuriy 18.4.2011, 6:42

AzateQ, в документацию посмотрите

и напечатайте и приведите сюда результат работы функции работы

Автор: AzateQ 18.4.2011, 18:08

Цитата(Litkevich Yuriy @ 18.4.2011, 7:42) *
AzateQ, в документацию посмотрите

и напечатайте и приведите сюда результат работы функции работы

Я не совсем понимаю, что вы от меня хотете и чего добиваетесь наводящими вопросами...
Есть класс формы, созданный Creator'ом, есть файл с переводом, причем подключенный к проекту, потому что обычные виджеты, добавляемые из кода корректно отображают перевод, но ничего этого нет, если подключать форму... Я уже с горя начал добавлять в statusBar Label'ы и явно через setText(tr("...")) пытаюсь вывести хоть что-то, но безрезультатно... И даже в Designer'е менял локализацию с RF на US...
Нельзя ли просто показать листинг простенькой стандартной формочки с переведенным заголовком, как его Linguist отображает в предпросмотре?.. Ну 100% я неправильно вызываю форму:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator trans;
    trans.load("intern_ru");
    a.installTranslator(&trans);
    MainWindow w;
    w.show();

    return a.exec();
}


Надо ведь как-то через функцию tr() вызывать, но как, я без понятия...
Ну или хотя бы тыкните лицом в то место в мануале, где надо читать.

Автор: RazrFalcon 18.4.2011, 22:41

Посмотрите http://www.forum.crossplatform.ru/index.php?s=&showtopic=3348&view=findpost&p=23875.
Этот пример у меня работает, а вот то что я сам писал - нет.

Автор: AzateQ 18.4.2011, 23:31

Цитата(RazrFalcon @ 18.4.2011, 23:41) *
Посмотрите http://www.forum.crossplatform.ru/index.php?s=&showtopic=3348&view=findpost&p=23875.
Этот пример у меня работает, а вот то что я сам писал - нет.

Спасибо!
Чуть-чуть упростил код по ссылке и все 3 метки стали корректно отображаться.
Но ведь там ui грузится из main'а, так что вопрос остается открытым, ибо если грузить User Interface из конструктора класса формы, то ничего не получается...

Автор: RazrFalcon 19.4.2011, 0:36

Я знаю. У меня тоже не грузится. Просто тот вариант РАБОТАЕТ =)

Автор: Litkevich Yuriy 19.4.2011, 7:04

Цитата(AzateQ @ 18.4.2011, 21:08) *
Я не совсем понимаю, что вы от меня хотете
никаких наводящих вопросов. Вопрос прямее некуда в http://www.forum.crossplatform.ru/index.php?showtopic=6793&view=findpost&p=48708

Автор: RazrFalcon 19.4.2011, 14:48

У меня true. Форма как была английской, так и осталась.

Автор: RazrFalcon 19.4.2011, 16:24

Вот пример. Он не работает.

 trans_test.tar.gz ( 1.97 килобайт ) : 238
 

Автор: AzateQ 19.4.2011, 17:58

ЭПИК ФЭИЛ!
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...
Столько нервов и времени потрачено впустую...
Неспроста меня настораживало предупреждение от Creator'a о том, что не возможно отладить в силу некорректно настроенных отладчиков, которые он, к слову, добавил в список автоматически...

Автор: RazrFalcon 19.4.2011, 18:24

Цитата(AzateQ @ 19.4.2011, 17:58) *
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...

:huh:
Студия+винда?

Автор: AzateQ 19.4.2011, 19:53

Цитата(RazrFalcon @ 19.4.2011, 19:24) *
Цитата(AzateQ @ 19.4.2011, 17:58) *
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...

:huh:
Студия+винда?

Ну да, некорректно выразился, импортировал в VS2008. Стоит Win7 HomeBasic, x64.
А в ошибке Qt Creator писал: "None of the debugger engines 'Cdb engine, Gdb engine' capable of debugging binaries of the type 'x86-windows-msvc2008-pe-32bit' is configured correctly." Попытался настроить, а там можно только новый отладчик добавить, дальше мне стало лень вникать, да и знаний у меня почти нет, так что я просто забил. Но, как оказалось, очень зря...

Автор: AzateQ 20.4.2011, 18:49

To RazrFalcon
Если вдруг нужен мой рабочий пример, могу сбросить.

Автор: RazrFalcon 20.4.2011, 19:38

Да. Спасибо. Так как у меня ни в какую.

Автор: AzateQ 24.4.2011, 10:05

Цитата(RazrFalcon @ 20.4.2011, 20:38) *
Да. Спасибо. Так как у меня ни в какую.

Сорри, совсем забегался и забыл...
 Qt_VS2008_Lab9.zip ( 5.4 килобайт ) : 157

Автор: RazrFalcon 24.4.2011, 10:31

Яху!

Раскоментирование:

translator->load("ru_ru");
qApp->installTranslator(translator);

сделало форму русской.
Буду пилить, почему у меня не работает мой пример.

Большое спасибо.

Автор: AzateQ 24.4.2011, 10:38

Цитата(RazrFalcon @ 24.4.2011, 10:31) *
Яху!
Большое спасибо.

Рад, что и от меня была хоть какая-то польза=)

Автор: RazrFalcon 24.4.2011, 12:55

Все пашет.
Снес все из main.cpp.
В конструктор класса формы добавил:

translator = new QTranslator;
translator->load("program_ru");
qApp->installTranslator(translator);
И все. Еще раз спасибо.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)