LINUX.ORG.RU

Нубский вопрос по подключению перевода в Qt

 


0

2

Привет, лор. Надеюсь, тут есть ещё не спящие кьютешники :)

В общем, пописываю я для души опенсорсные проги и кладу в бложег. До сегодняшего дня писал всё на делфи, но вот какая-то муха меня укусила и я решил перейти на что-нибудь 1) опенсорсное 2) кроссплатформенное. Выбрал Qt и пытаюсь в нём потихоньку разобраццо.

В общем, как ни бьюсь - не могу подключить к проге перевод. Хочу спросить совета, пока мой моск не сдетонировал... Делаю так:

1) Главная форма в mainwindow.cpp, строка для перевода обрамлена tr():

inisNotFoundMsg.setText(tr("Can't found PCSX2 config folder \"inis\".\r\nMake sure QConfboy executable is located in PCSX2 folder."));
2) Прописал в .pro
TRANSLATIONS += qconfboy_ru.ts
3) Сгенерировал .ts, перевёл его Лингвистом, сгенерировал .qm

4) В main.cpp прописал подключение перевода так, как написано в официальных доках

#include <QtGui/QApplication>
#include <QTranslator>
#include "mainwindow.h"

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

    QTranslator translator;
    translator.load("qconfboy_ru");
    a.installTranslator(&translator);

    MainWindow w;
    w.show();
    
    return a.exec();
}

И хренушки. Сообщение при запуске проги всё равно идёт по-английски...

Погуглив, нашёл где-то, что надо прописать после объявления QApplication:

    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

Однако это тоже не помогло :(

А что возвращает load()?

setCodecForTr() нужны, только если оригинальный текст в tr - не на английском (читай, не в Latin-1). В данном случае - не нужно.

schizoid ★★★
()

pro

RESOURCES += \
    res.qrc
res.qrc
<RCC>
    <qresource prefix="/img">
        <file>icon.png</file>
    </qresource>
    <qresource prefix="/lang">
        <file>ru.qm</file>
    </qresource>
</RCC>
main.cpp
QTranslator lang;
lang.load(":/lang/" + QLocale::system().name());
a.installTranslator(&lang);

imb ★★
()

Есть предположение, что твоя программа не находит файл с переводом qconfboy_ru, выше предложили хороший вариант с хранением переводов в ресурсах, ну или пропиши правильный путь к файлу (положи файл в нужную директорию).

m0rph ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.