Версия для печати темы
Форум на 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
Вот пример. Он не работает.
Автор: AzateQ 19.4.2011, 17:58
ЭПИК ФЭИЛ!
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...
Столько нервов и времени потрачено впустую...
Неспроста меня настораживало предупреждение от Creator'a о том, что не возможно отладить в силу некорректно настроенных отладчиков, которые он, к слову, добавил в список автоматически...
Автор: RazrFalcon 19.4.2011, 18:24
Цитата(AzateQ @ 19.4.2011, 17:58)
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...
Студия+винда?
Автор: AzateQ 19.4.2011, 19:53
Цитата(RazrFalcon @ 19.4.2011, 19:24)
Цитата(AzateQ @ 19.4.2011, 17:58)
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...
Студия+винда?
Ну да, некорректно выразился, импортировал в 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)