Qt локализация: загрузка локализуемой строки - PullRequest
0 голосов
/ 10 августа 2010

Я хочу загрузить локализованную строку в приложении Qt. Для этого я следую несколько шагов. Поправь меня, если я ошибаюсь.

Примечание: он отлично работает для QString, но не для const char*

  1. Обновите pro-файл с помощью язык перевода

  2. Генерация .ts и редактирование с использованием Qt лингвист. Создать файл .qm, используя lupdate и lrelease.

  3. Загрузить файл .qm из определенного место.

Вот как выглядит const char*:

const char* sayHello =  QT_TRANSLATE_NOOP("FriendlyConversation","hello");

LocalizationWithQT::LocalizationWithQT(QWidget *parent)
    : QMainWindow(parent)
{
 //ui.setupUi(this);
 QString str = tr("say hello");
 QPushButton *pushbutton = new QPushButton(tr(sayHello));
 setCentralWidget(pushbutton)

}

А вот как я загружаю файл .qm:

QApplication a(argc, argv);

    QTranslator translator;
    bool val = translator.load("c:\\Data\\test\\hellotr_la");
    a.installTranslator(&translator);

    LocalizationWithQT w;
    w.showMaximized();
    return a.exec();

Проблема в том, что если я предоставлю любую альтернативную латинскую строку для sayhello, она вообще не загружается.

Понятия не имею, где ошибка.

1 Ответ

0 голосов
/ 23 августа 2010

Если вы используете tr(sayHellow), Qt будет искать перевод sayHellow в текущем контексте (= LocalizationWithQT класс).

Вы должны явно указать Qt текстовый контекст:

QPushButton *pushbutton 
    = new QPushButton(qApp->translate("FriendlyConversation", sayHellow));
...