Название: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 22, 2011, 22:04 Допустим я создал файл перевода myprog_ru.qm. Сделал так, чтобы при переключении языка в combobox он менялся с en на ru. А как указать qtTranslator->load(/*что здесь?*/) вернуться к тому с чего переводили? Я решил эту проблему создав файл перевода myprog_eng.qm, просто копировав в лингвисте все значения в англ перевод. Подозреваю, что это очень неправильно. Работает ну и ладно.
Но я столкнулся с проблемой, которую таким способом не смог решить. Мне необходимо вместе с динамической сменой перевода приложения переводить не только мои тексты, но и стандартные Qt`шные. Например кнопки в QMessageBox. Где взять qt_en.qm? login@mypc:~$ ls /usr/share/qt4/translations/ assistant_cs.qm designer_sl.qm qt_es.qm qt_pt.qm assistant_da.qm designer_uk.qm qt_fr.qm qt_ru.qm assistant_de.qm designer_zh_CN.qm qt_gl.qm qt_sk.qm assistant_fr.qm designer_zh_TW.qm qt_help_cs.qm qt_sl.qm assistant_hu.qm linguist_cs.qm qt_help_da.qm qt_sv.qm assistant_ja.qm linguist_de.qm qt_help_de.qm qt_uk.qm assistant_pl.qm linguist_fr.qm qt_help_fr.qm qt_zh_CN.qm assistant_ru.qm linguist_hu.qm qt_help_hu.qm qt_zh_TW.qm assistant_sl.qm linguist_ja.qm qt_help_ja.qm qvfb_hu.qm assistant_uk.qm linguist_pl.qm qt_help_pl.qm qvfb_ja.qm assistant_zh_CN.qm linguist_ru.qm qt_help_ru.qm qvfb_pl.qm assistant_zh_TW.qm linguist_sl.qm qt_help_sl.qm qvfb_ru.qm designer_cs.qm linguist_uk.qm qt_help_uk.qm qvfb_sl.qm designer_de.qm linguist_zh_CN.qm qt_help_zh_CN.qm qvfb_uk.qm designer_fr.qm linguist_zh_TW.qm qt_help_zh_TW.qm qvfb_zh_CN.qm designer_hu.qm qt_ar.qm qt_he.qm qvfb_zh_TW.qm designer_ja.qm qt_cs.qm qt_hu.qm designer_pl.qm qt_da.qm qt_ja.qm designer_ru.qm qt_de.qm qt_pl.qm Название: Re: Динамический перевод и возврат к английскому языку Отправлено: iroln от Декабрь 22, 2011, 22:09 Для этого существует метод retranslateUi. Если создаёшь форму в QtDesigner, такой метод будет по умолчанию. При динамической смене языка, вызываешь его, все переводимые компоненты будут переведены.
А вообще не очень понятно в чём проблема, в файле перевода должны быть все строки, в том числе и строки, которые сидят в твоих виджетах, кнопках и т.д. Название: Re: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 22, 2011, 22:18 С помощью сгенерированной Designer`ом функцией retranslateUi() Qt`шные кнопки не переводились на русский. Только кнопки созданные мной. Они стали переводиться когда я вызвал дополнительно
Код: lang = "ru"; А как перевести на английский обратно, не пойму Название: Re: Динамический перевод и возврат к английскому языку Отправлено: iroln от Декабрь 22, 2011, 22:21 Сначала, естественно, надо загрузить в транслятор другой перевод, а затем уже вызывать retranspateUi().
Наверное, ты где-то что-то напутал, потому что с динамической сменой языка проблем обычно не возникает, если всё правильно сделано. Можешь прочитать главу 18 в книге Бланшета и Симмерфилда "Qt4 Программирование GUI на С++, 2 издание", стр. 425-445. Там всё хорошо и подробно описано. Название: Re: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 22, 2011, 22:54 Можешь прочитать главу 18 в книге Бланшета и Симмерфилда "Qt4 Программирование GUI на С++, 2 издание", стр. 425-445. Там всё хорошо и подробно описано. Прочитал. там в примерах "для простоты" подразумевается, что есть файл myprog_en.qm. Также там написано, что "можно поступить и по другому и вызывать функцию clear() для объектов QTranslator, когда пользователь выбирает английский язык". В Qt4 нет у QTranslator функции clear(), и если сделать вот так Код: QCoreApplication::installTranslator(new QTranslator) то все равно не возвращается к английскому Название: Re: Динамический перевод и возврат к английскому языку Отправлено: iroln от Декабрь 22, 2011, 23:07 Внезапно... можно сгенерировать qm файл для английского языка, но не делать в нём перевод. Чтобы вернуть интерфейс на английский, надо будет загрузить в транслятор этот самый qm файл. Я так и делаю, поэтому до конца не понимаю в чём у тебя проблема заключается. :)
Создаёшь файлы перевода для всех своих языков, например, ru_RU.qm и en_US.qm, переводишь ru_RU, en_US не переводишь, динамически загружаешь который нужен, вот и всё. :) Название: Re: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 22, 2011, 23:10 Для своих текстов у меня все работает. Речь о текстах, вшитых в библиотеку Qt. Как к ним сгенерировать qm файл?
Название: Re: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 22, 2011, 23:21 Плохой вопрос задал я 8)
Как вернуться к языку который в tr`ах и в ui файлах без создания для него qm? Название: Re: Динамический перевод и возврат к английскому языку Отправлено: iroln от Декабрь 22, 2011, 23:28 Цитировать Речь о текстах, вшитых в библиотеку Qt. Как к ним сгенерировать qm файл? А что за тексты вшиты в библиотеку Qt? Это и был "плохой вопрос"? :)Цитировать Как вернуться к языку который в tr`ах и в ui файлах без создания для него qm? Так ведь проще всего сгенерировать и скомпилировать qm файл, назвать его en_US и не переводить. Он и будет выполнять роль того самого, который "в tr`ах и в ui файлах".Название: Re: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 22, 2011, 23:32 http://habrahabr.ru/blogs/qt_software/51319/
абзац "Дополнительные текстовые строки" Название: Re: Динамический перевод и возврат к английскому языку Отправлено: iroln от Декабрь 22, 2011, 23:37 Цитировать Qt содержит внутри около 400 строк, которые так же должны быть переведены на языки которые нам необходимы. Никогда не было нужды переводить строки в самой Qt. Это какие-то сервисные сообщения, сообщения об ошибках и т.п.? Никогда не заморачивался, а тебе это как раз и надо в дополнение к ui и tr()?Название: Re: Динамический перевод и возврат к английскому языку Отправлено: kambala от Декабрь 23, 2011, 00:15 Код
Название: Re: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 23, 2011, 12:12 Код
Не сработало. Не меняет он на английский таким образом Название: Re: Динамический перевод и возврат к английскому языку Отправлено: Kolobok от Декабрь 23, 2011, 12:36 QCoreApplication::removeTranslator ( QTranslator * translationFile )
Название: Re: Динамический перевод и возврат к английскому языку Отправлено: cdhappyfuture от Декабрь 23, 2011, 15:05 QCoreApplication::removeTranslator ( QTranslator * translationFile ) Спасибо большое, это то что нужно |