Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Мультиязычность для готовых форм .ui
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt инструментарий
AzateQ
Никак не могу разобраться с тем, как выводить готовые формы переведенными...
Создаю в Qt Creator проект, ничего не добавляю, просто пустое окно.
Редактирую .pro, добавляя TRANSLATIONS ..._ru.ts
Запускаю lupdate, а потом открываю сгенерированный файл в Linguist'е. Он, понятное дело, находить только MainWindow, перевожу его, при этом Linguist в окне "Исходники и формы" корректно отображает имя формы на русском языке...
Далее запускаю lrelease, и устанавливаю перевод в main.cpp, потом, как я понимаю, надо подредактировать конструктор, чтобы окно переведенным выходило, но что там писать, я так и не додумался.
Если не использовать .ui все работает, но хотелось бы научиться делать это еще и используя Designer...
Может я в поисковиках какие-то неправильные запросы ввожу, но ничего толкового на эту тему не нашел... Да и вообще, кругом копипасты немногочисленной информации о работах с формами, зато материалов про добавление виджетов через код пруд пруди... Полистал Шлее, полистал стандартную справку, но ничего полезного так и не нашел...
Надеюсь, что хоть тут помогут.
Litkevich Yuriy
Цитата(AzateQ @ 17.4.2011, 1:54) *
и устанавливаю перевод в main.cpp
как устанавливаешь?
Цитата(AzateQ @ 17.4.2011, 1:54) *
потом, как я понимаю, надо подредактировать конструктор
ничего не надо, где ты такое прочитал?

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

QApplication a(argc, argv);
QTranslator tran;
tran.load("..._ru");
a.installTranslator(&tran);
Litkevich Yuriy
Цитата(AzateQ @ 17.4.2011, 3:37) *
tran.load("..._ru");
что возвращает?
AzateQ
Цитата(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
Та же проблема. Как ни пробовал, все равно не подхватывается локализация.
Подключал также как и выше.
Litkevich Yuriy
AzateQ, в документацию посмотрите

и напечатайте и приведите сюда результат работы функции работы
AzateQ
Цитата(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
Посмотрите это.
Этот пример у меня работает, а вот то что я сам писал - нет.
AzateQ
Цитата(RazrFalcon @ 18.4.2011, 23:41) *
Посмотрите это.
Этот пример у меня работает, а вот то что я сам писал - нет.

Спасибо!
Чуть-чуть упростил код по ссылке и все 3 метки стали корректно отображаться.
Но ведь там ui грузится из main'а, так что вопрос остается открытым, ибо если грузить User Interface из конструктора класса формы, то ничего не получается...
RazrFalcon
Я знаю. У меня тоже не грузится. Просто тот вариант РАБОТАЕТ =)
Litkevich Yuriy
Цитата(AzateQ @ 18.4.2011, 21:08) *
Я не совсем понимаю, что вы от меня хотете
никаких наводящих вопросов. Вопрос прямее некуда в сообщении №4
RazrFalcon
У меня true. Форма как была английской, так и осталась.
RazrFalcon
Вот пример. Он не работает.
AzateQ
ЭПИК ФЭИЛ!
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...
Столько нервов и времени потрачено впустую...
Неспроста меня настораживало предупреждение от Creator'a о том, что не возможно отладить в силу некорректно настроенных отладчиков, которые он, к слову, добавил в список автоматически...
RazrFalcon
Цитата(AzateQ @ 19.4.2011, 17:58) *
Импортировал свой тестовый проект в С++ через Add-in и внезапно все заработало...

:huh:
Студия+винда?
AzateQ
Цитата(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
To RazrFalcon
Если вдруг нужен мой рабочий пример, могу сбросить.
RazrFalcon
Да. Спасибо. Так как у меня ни в какую.
AzateQ
Цитата(RazrFalcon @ 20.4.2011, 20:38) *
Да. Спасибо. Так как у меня ни в какую.

Сорри, совсем забегался и забыл...
Нажмите для просмотра прикрепленного файла
RazrFalcon
Яху!

Раскоментирование:
translator->load("ru_ru");
qApp->installTranslator(translator);

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

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

Рад, что и от меня была хоть какая-то польза=)
RazrFalcon
Все пашет.
Снес все из main.cpp.
В конструктор класса формы добавил:
translator = new QTranslator;
translator->load("program_ru");
qApp->installTranslator(translator);
И все. Еще раз спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.