Название: [решено] Частичный перевод Отправлено: serg_hd от Апрель 29, 2010, 18:10 Решил попробовать linguist, всё перевёл, qm-файл получил и подключил его:
Код Перевелось частично, в основном диалоговые окна. Splashscreen, tabs и многое другое не перевелось. ui_mainwindow.h не использую, гуй писался с нуля руками, все tr() в коде с ключами для перевода стоят на своих местах это 100% (перепроверил неск. раз). В чём может быть причина? Название: Re: Частичный перевод Отправлено: serg_hd от Апрель 29, 2010, 18:48 Заметил, что перевелось только то, что создавалось динамически - т.е. после запуска приложения. Весь текст, который в инициализации у классов не переводится.
Название: Re: Частичный перевод Отправлено: kibsoft от Апрель 29, 2010, 19:12 Ответа не знаю, но скажу что недавно у меня такое приключилось: изначально программа была вся на русском (с tr() все), а потом решил на англ сделать, но изменил все в исходниках(т.к. русский не нужен), потом запускаю в Linux, открываю FileDialog, там возникает ошибка (не хватает Xine вроде) и в этот момент некоторые пункты меню (о чудо) и несколько кнопок сами переводятся на русский...до сих пор удивлен..
Название: Re: Частичный перевод Отправлено: Kolobok от Апрель 29, 2010, 19:18 Главное окно создаешь до подключения транслятора?
Название: Re: Частичный перевод Отправлено: serg_hd от Апрель 29, 2010, 19:21 Главное окно создаешь до подключения транслятора? нет, после:Код Если до, то не будет переводится даже то, что переводится на данный момент. Название: Re: Частичный перевод Отправлено: serg_hd от Апрель 29, 2010, 19:42 каким образом реализовывать метод retranslateUi()?
Название: Re: Частичный перевод Отправлено: Kolobok от Апрель 29, 2010, 19:47 каким образом реализовывать метод retranslateUi()? Определить метод retranslateUi(). В реализацию запихать все tr(). В event() ловить QEvent::LanguageChange. Название: Re: Частичный перевод Отправлено: serg_hd от Апрель 29, 2010, 19:53 каким образом реализовывать метод retranslateUi()? Определить метод retranslateUi(). В реализацию запихать все tr(). В event() ловить QEvent::LanguageChange. В реализацию запихать все tr(). - как именно, может есть пример? В event() ловить QEvent::LanguageChange - мне это не надо, язык только русский. Делаю для того, чтобы не было русского текста в коде. Где потом вызывать retranslateUi(), перед или после создания гуя? Название: Re: Частичный перевод Отправлено: Kolobok от Апрель 29, 2010, 20:20 Хороший стиль - писать программу готовой к смене языков, даже если предполагается использовать только один.
Цитировать В реализацию запихать все tr(). - как именно, может есть пример? Код: void MyWiget::retranslateUi() Цитировать Где потом вызывать retranslateUi(), перед или после создания гуя? В event() при получении QEvent::LanguageChange. Цитировать мне это не надо, язык только русский. Делаю для того, чтобы не было русского текста в коде. Тогда тебе ничего этого не надо. Убери русский язык из кода, переведи лингвистом и всё. QTextCodec тоже убери. Название: Re: Частичный перевод Отправлено: serg_hd от Апрель 29, 2010, 20:24 Тогда тебе ничего этого не надо. Убери русский язык из кода, переведи лингвистом и всё. QTextCodec тоже убери. Так перевёл же, не цепляется перевод никак! Частично только переводит - весь тот текст, который не был назначен при инициализации.Название: Re: Частичный перевод Отправлено: Kolobok от Апрель 29, 2010, 20:39 Код: { QApplication app(argc, argv); QTranslator translator; translator.load("langs/lang_ru"); app.installTranslator(&translator); QLabel *label = new QLabel( tr( "My label" ) ); label->show(); MainForm mainForm; return app.exec(); } Обнови перевод. Перекомпилируй полностью. Что в QLabel? translator.load("langs/lang_ru") что возвращает? Название: Re: Частичный перевод Отправлено: serg_hd от Апрель 29, 2010, 20:56 Разобрался (не без помощи sendevent).
main(): Код
Мой gui-класс: Код
|