Russian Qt Forum
Сентябрь 21, 2024, 12:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 4.3.1 и QTranslator (фичи или баги)  (Прочитано 7312 раз)
-QT-
Гость
« : Сентябрь 21, 2007, 14:14 »

В ядре программы:
Код:
    foreach (QString fileName, entryList)
    {
        QPluginLoader loader(fileName);
        QObject *plugin = loader.instance();
        if (plugin)
        {
            QMyInterfaces *iModule = qobject_cast<QMyInterfaces *>(plugin);
            if (iModule)
            {
                // инициализация локализации модуля
                qApp->installTranslator( iModule->pluginTranslator(translationLanguage) );
                //qDebug() << "checked:" << translationLanguage ;
В плагине:
Код:
QTranslator *QMyMainPlugin::pluginTranslator(QString locale)
{
    QTranslator *translator = new QTranslator(this);
    QString translationFile = ":/language/translations/"+locale+".qm";
    translator->load(translationFile);
    return translator;

}

До версии 4.3.1 работало - тоесть переводило интерфейс.
Сейчас не ругается но и не переводит. Может кто сталкивался. СОС
Записан
ритт
Гость
« Ответ #1 : Сентябрь 21, 2007, 15:29 »

почему не работает не могу сказать - попробовал, вроде, переводит (4.3.1, вин32)
а зачем кутранслятор возвращать? не проще ли строку? или вообще предефайнить (по имени плагина, например)?

свою реализацию перевода из плагинов уже описывал: http://prog.org.ru/forum/index.php/topic,6045.msg26798.html#msg26798
Записан
Вячеслав
Гость
« Ответ #2 : Сентябрь 21, 2007, 20:05 »

я в плагине QCoreApplication::instance () ->installTranslator(xxxxxxxxxxxxx) дергал Подмигивающий
Записан
-QT-
Гость
« Ответ #3 : Сентябрь 21, 2007, 20:35 »

Да хочу чтобы в каждом отдельном плагине был набор собственных переводов и транслятор для этого
плагина уничтожался вместе с ним.  Непонимающий
Записан
-QT-
Гость
« Ответ #4 : Сентябрь 21, 2007, 22:01 »

я в плагине QCoreApplication::instance () ->installTranslator(xxxxxxxxxxxxx) дергал Подмигивающий

кусочек кода - если не трудно.
Я вроде бы тоже так делаю но эффекта НЕТ.
Записан
Вячеслав
Гость
« Ответ #5 : Сентябрь 21, 2007, 22:27 »

я в плагине QCoreApplication::instance () ->installTranslator(xxxxxxxxxxxxx) дергал Подмигивающий

кусочек кода - если не трудно.
Я вроде бы тоже так делаю но эффекта НЕТ.
Код:
			QCoreApplication* app=QCoreApplication::instance();
  Q_INIT_RESOURCE(Styles);

QString locale = QLocale::system().name();
translator=new QTranslator;

if (translator->load(QString("df_iStyles_") + locale))
app->installTranslator(translator);
Это из архива ... То что работает - в понедельик на работе гляну
Записан
-QT-
Гость
« Ответ #6 : Сентябрь 24, 2007, 09:11 »

Цитировать
Код:
			QCoreApplication* app=QCoreApplication::instance();
  Q_INIT_RESOURCE(Styles);

QString locale = QLocale::system().name();
translator=new QTranslator;

if (translator->load(QString("df_iStyles_") + locale))
app->installTranslator(translator);
Это из архива ... То что работает - в понедельик на работе гляну
Попробовал загружать транслятор внутри модуля - результат тотже.
Наверное что то изменилось в трансляторе или в реализации подключения плагинов.
Это только в 4,3,1 - потому как в 4,2,3 все работает правильно.
Записан
Вячеслав
Гость
« Ответ #7 : Сентябрь 24, 2007, 09:50 »

Завтра доползу до пересборки клиентской части - проверю ....
Записан
-QT-
Гость
« Ответ #8 : Сентябрь 26, 2007, 11:29 »

Таки это была фича  Смеющийся
в ресурсах стояли одинаковые пути то есть -
при загрузке главного модуля(ядра) программы
Код:
translator->load(":/language/translations/"+locale+".qm");
в методе загрузки транслятора было тоже самое (тоесть совпадала структура каталогов и файлов ресурсов в двух проектах)
Код:
translator->load(":/language/translations/"+locale+".qm");
после изменения в плагине на
Код:
translator->load(":/translations/translations/"+locale+".qm");
и использовании в исходниках не QObject::tr("demo text"), а просто tr("demo text"); все заработало.
По какой причине это изменилось, я не знаю - если кто знает объясните пожалуста.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 22.