Пожалуйста, дайте мне знать, почему он не работает. Я новичок в Qt. вот код
class Transl
{
public:
static const QString str;
};
const QString Transl::str = QObject::tr("Hello world");
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator translator;
translator.load("trans_la");
app.installTranslator(&translator);
QPushButton hello(Transl::str);
hello.resize(100, 30);
hello.show();
return app.exec();
}
Мой файл trans_la.ts содержит это, которое я генерирую lupdate.
<TS version="2.0">
<context>
<name>QObject</name>
<message>
<location filename="main.cpp" line="10"/>
<source>Hello world</source>
<translation>Orbis, te saluto!</translation>
</message>
</context>
</TS>
Затем я делаю lrelease, которые генерируют trans_la.qm. Но когда я запускаю свой исполняемый файл вместо показа переведенной строки, он показывает "Hello world". Пожалуйста, предложите мне, почему он не работает.
См. Руководство Qt Linguist и найдите раздел, обозначенный с Using QT_TR_NOOP() and QT_TRANSLATE_NOOP()
примерно на две трети пути вниз по странице.
Рекомендуется проверить возвращаемое логическое значение из translator.load(). Я не мог заставить это работать и заметил, что файл загружается неправильно. Затем я обнаружил другую запись и вручную переместил файл trans_fr.qm
в каталог выше.exe. Я предполагаю, что это ошибка, поскольку в приветственном переводе не упоминается, что это необходимо.