Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Интернационализация QT приложения  (Прочитано 1068 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Кровавый

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Интернационализация QT приложения
« : 27 Февраля 2012, 15:56:13 »
Есть почти готовый проект.

Все переводимые строки заключены в tr().
Сформированы файла перевода *.ts успешно созданы, переведены, скомпилированы бинарники.

Пытаюсь загрузить:
Код: (c++) [Выделить]
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QTranslator>
#include <QLocale>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // Кодировка
    QTextCodec* codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForCStrings(codec);
    QString bb = QApplication::applicationFilePath();

   // Переводы
     QTranslator appTranslator;
     appTranslator.load(QString("app_en.qm"), bb);
     a.installTranslator(&appTranslator);

   // Запускаем от имени суперпользователя
    bb.toLocal8Bit();
    char *tmp1;
    tmp1 = bb.toAscii().data();
    char buf[BUFSIZ], command[200] = "kdesudo ";
    strcat(command, tmp1);
    bb.clear();
///////////////////////////
         FILE *ptr;
         int test=0;
         if ((ptr = popen("id | grep uid=0", "r")) != NULL)
              while (fgets(buf, BUFSIZ, ptr) != NULL)
                 test++;
                 pclose(ptr);
///////////////////////////
  if(test==0) {
        qDebug() << "USER: get ROOT ... ";
        system(command);
        a.exit();
    } else {
        qDebug() << "ROOT: ok. Begin ... ";
        MainWindow w;
        w.show();
    return a.exec();
    }
}

Но ни интерфейс, ни диалоговые окна не переводятся. Все строки идут в первоначальном варианте.

Что я забыл/не понял?

Заранее благодарен.
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн andrew_bye

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2698
    • Просмотр профиля
Re: Интернационализация QT приложения
« Ответ #1 : 27 Февраля 2012, 18:46:44 »
Локаль системы какая?

Оффлайн Кровавый

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Интернационализация QT приложения
« Ответ #2 : 27 Февраля 2012, 20:19:57 »
Локаль системы какая?


Локаль русская.
Но я думал, что могу явно загрузить файл перевода.

Пользователь решил продолжить мысль 27 Февраля 2012, 20:31:18:
Тьфу! Вот я...
В .pro у меня прописаны .ts, а .qm то нет! Он их при сборке и не копирует в папку с собранным проектом. Отсюда и не может загрузить переводы.
Одно не понятно, неужели нельзя написать об этом в дебагере? Весь день маны перечитываю, а оказывается, всё проще, чем кажется на первый взгляд! :)
« Последнее редактирование: 27 Февраля 2012, 20:31:18 от Кровавый »
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

 

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