Witam,
Stworzyłem bardzo prostą aplikację: kilka wpisów w menu oraz etykieta z klasycznym "Hello World". Na tym uproszczonym programie chcę znaleźć przyczynę niedziałających programów w Qt Linguist.
Kompilator: Visual C++ 2010
Qt: 4.8.1 for Desktop
Mój plik .pro:
QT += core gui
TARGET = International
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
TRANSLATIONS = International_pl.ts
Na początek stworzyłem tą aplikację, działa.
Procedurę wykonałem następująco:
- W IDE wybrałem: lupdate.
- Potem stworzony plik International_pl.ts otworzyłem w Linguist i dokonałem tłumaczeń.
- W IDE wykonałem lrelease.
Zakończono "C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/bin/lupdate.exe"
Uruchamianie narzędzia zewnętrznego "C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/bin/lrelease.exe" E:/qt/International/International.pro
Updating 'E:/qt/International/International_pl.qm'...
Generated 7 translation(s) (0 finished and 7 unfinished)
Nazwa katalogu jest nieprawidowa.
Could not find qmake configuration directoryCould not find qmake configuration fileUsing OS scope before setting MAKEFILE_GENERATOR
Zakończono "C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/bin/lrelease.exe"
Uruchamianie narzędzia zewnętrznego "C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/bin/lrelease.exe" E:/qt/International/International.pro
Updating 'E:/qt/International/International_pl.qm'...
Generated 7 translation(s) (0 finished and 7 unfinished)
Nazwa katalogu jest nieprawidowa.
Could not find qmake configuration directoryCould not find qmake configuration fileUsing OS scope before setting MAKEFILE_GENERATOR
Zakończono "C:/QtSDK/Desktop/Qt/4.8.1/msvc2010/bin/lrelease.exe"
Operacja chyba nie do końca się udała, ale w katalogu projektu uzyskałem plik:
International_pl.qm, czyli skompilowane tłumaczenie. Chyba o to chodziło.
Następnie zabrałem się za poprawki w pliku main:
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator qtTranslator;
bool load = qtTranslator.load("International_pl");
a.installTranslator(&qtTranslator);
MainWindow w;
w.show();
if(!load) {
QMessageBox::critical(&w, "Error", "Failed to load translation");
exit(1);
}
return a.exec();
}
Niestety, load ma wartość fałsz. Załadowanie tłumaczenie nie udaje się.
Gdy do metody load podam ścieżkę bezwzględną: E:/qt/International/International_pl.qm tłumaczenie ładuje się. W jaki sposób zrobić by to zawsze działało?