Название: Локализация в плагинах (динамических) Отправлено: -=QT=- от Июль 31, 2007, 12:15 Ув. Сообщество
Сталкивались ли Вы с локализацией в плагинах? И если можете направьте на путь истинный. Так как в приложении можно сделать так: Код: QTranslator translator; А в плагине куда совать это всё. ========= Windows XP ~ Linux 2.6.x ~QT 4.2.3 (4.3.0 - test) Название: Локализация в плагинах (динамических) Отправлено: QCasper от Июль 31, 2007, 12:27 я в конструктор виджета совал, только экземпляр транслятора надо в heap создавать, а не в стеке, иначе отмирать будет при завершении работы конструктора, и как следствие никакого перевода вы не увидите
Название: Локализация в плагинах (динамических) Отправлено: -=QT=- от Июль 31, 2007, 13:38 Большое спасибо.
Только можно кусочек кода этого (одним глазком). добавлено спустя 1 час 5 минут: Нашел подобную тему и решение для неё: http://www.qtcentre.org/forum/f-qt-programming-2/t-plugin-and-internationalization-631.html Всем спасибо за общение. Если ктото забацает по другому дайте знать. Очень интересно. Название: Локализация в плагинах (динамических) Отправлено: QCasper от Июль 31, 2007, 13:45 Цитата: "-=QT=-" Большое спасибо. Только можно кусочек кода этого (одним глазком). добавлено спустя 1 час 5 минут: Нашел подобную тему и решение для неё: http://www.qtcentre.org/forum/f-qt-programming-2/t-plugin-and-internationalization-631.html Всем спасибо за общение. Если ктото забацает по другому дайте знать. Очень интересно. От вашего мало чем отличается. Код: const QList<const char*> c_TranslateFiles = QList<const char*>() добавлено спустя 3 минуты: Цитата: "-=QT=-" Нашел подобную тему и решение для неё: http://www.qtcentre.org/forum/f-qt-programming-2/t-plugin-and-internationalization-631.html Или так... Название: Локализация в плагинах (динамических) Отправлено: -=QT=- от Июль 31, 2007, 14:27 Я с начала тоже пытался сделать ТАК:
Код: const QList<const char*> c_TranslateFiles = QList<const char*>() но в строке : Код: qApp->installTranslator(t); он ругался, что нет у него qApp в плагине. Название: Локализация в плагинах (динамических) Отправлено: QCasper от Июль 31, 2007, 15:19 Цитата: "-=QT=-" он ругался, что нет у него qApp в плагине. что значит "нет в плагине", и кто именно ругался? Название: Локализация в плагинах (динамических) Отправлено: -=QT=- от Август 01, 2007, 07:27 Цитата: "QCasper" Цитата: "-=QT=-" он ругался, что нет у него qApp в плагине. что значит "нет в плагине", и кто именно ругался? Ругался компилятор при сборке плагина. Но я подразумеваю что все дело было в QTranslator translator; Название: Локализация в плагинах (динамических) Отправлено: ритт от Август 04, 2007, 02:13 я исходил из принципа, что рядом с плагином не буду таскать кучу мелких бинарничков .qm
//у меня в каждом плагине от силы десяток коротких строк наберётся сделал трансляшки как обычно и дописал ресурс с путями к бинарничкам затем в плагине инициализируется ресурс и инсталлю его из плагинменеджера // ... QString baseName = QFileInfo(fileName).baseName(); if(baseName.startsWith("lib")) baseName.remove(0, 3); QPluginLoader loader(fileName); if(loader.load()) { QTranslator* translator = 0; translator = new QTranslator(qApp); if(translator->load(":/translations/"+baseName+"_"+QLocale::system().name())) qApp->installTranslator(translator); } QObject* plugin = loader.instance(); // ... пара оговорок: каждый плагин у меня используется в роли фабрики - по запросу создаёт и возвращает сущности с определённым функционалом loader.instance() приходится использовать после qApp->installTranslator(translator); если кастится и распознаётся, делаю translator->setParent(plugin), иначе delete translator таким образом при выгрузке плагина я обеспечиваю убийство транслятора поправьте, если что не так |