Problem z wielojęzycznością w Qt

0

Witam,
przechodząc od razu do rzeczy.. Na początku próbowałem do swojego projektu wdrożyć mechanizm wielojęzyczności z wykorzystaniem narzędzia Qt Linguist. Teoretycznie wykonałem wszystkie kroki które potrzebne są do osiągnięcia zamierzonego celu, ale ostatecznie nadal mam wersje "natywną" języka (tak jakby w ogóle plik z innym językiem nie był widziany..).

Postanowiłem więc odpalić przykład Hello tr() ze strony qt-project ( http://qt-project.org/doc/qt-5.0/qtlinguist/hellotr.html )i w sumie nadal mam to samo, czyli nic się nie dzieje..
{początkowo miałem problem z dojściem do tego jak w ogóle obsłużyć Qt Linguist, więc napiszę pokrótce co zrobiłem:

  1. Pobrałem projekt
  2. Wywołałem lupdate hellotr.pro
  3. Wywołałem linguist hellotr_la.ts
  4. Wydałem (release) plik hellotr_la.qm
  5. Odpaliłem projekt..

}

Ogólnie dodam jeszcze, że działam pod linuxem.

Co mogę robić źle, że mi to nie działa ?

0

Instrukcja w linku jest dość jasna wystarczy wszystko robić krok po kroku.

  1. dodajesz do pliku *.pro iste tłumaczeń jakie chcesz zapewnić:
TRANSLATIONS += projekttr_pl.ts \
     projekttr_es.ts
  1. uruchamiasz dla projektu lupdate, ten generuje/aktualizuje ci pliki ts
  2. uruchamiasz qtlinguist-a wykonujesz tłumaczenia (zaznaczasz, że tłumaczenie wykonano), zapisujesz
  3. do kodu dodajesz wczytywanie tłumaczenia i instalujesz wybrane tłumaczenie (najlepiej w pliku main)
#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>

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

    QTranslator trans;
    bool ok = trans.load("projekttr_pl");
    qDebug("translation %d", ok);
    a.installTranslator(&trans);

    MainWindow w;
    w.show();
    
    return a.exec();
}
  1. uruchamiasz lrelease by uzyskać pliki qm
  2. budujesz projekt i gotowe

Pamiętaj tylko by pliki z tłumaczeniami znalazły się we właściwym katalogu tak by program mógł je swobodnie wczytać (budowanie w innym miejscu może to popsuć).

0

Dzięki za odpowiedź.. W sumie trochę porzuciłem temat, ale nadal go nie rozwiązałem więc tym bardziej jestem rad za Twoją odpowiedź :)

Ogólnie podpowiedziałeś mi, że warto by było zobaczyć, czy plik z językiem jest wczytywany i okazuje się że niestety nie (false), więc prawodpodobnie tutaj leży problem..
Tylko nie wiem jak ustalić tą poprawną ścieżke, bo wszystkie pliki mam w jednym folderze, więc kod powinien wyglądać tak jak Twój..

0

Po Twoim poście domyślam się że nie korzystasz z resources http://qt-project.org/doc/qt-5.0/qtcore/resources.html . Nigdy nie korzystałem z linguist, ale zapewne ten wymaga aby plik z tłumaczeniem był właśnie tam.

0

Kiedyś miałem problem ze wczyteniem pliku tłumaczenia. Podanie pełnej ścieżki do pliku rozwiązało sprawę.

0

To może coś doradzicie.. Projekt próbuje uruchomić na linuxie i dotychczas próbowałem takich ścieżek:

bool ok = trans.load("tt1_la");

lub

bool ok = trans.load("tt1_la","home/user/helloWorldTr");

Obie opcje dają ok = false..

0

Nieładnienie pisać na priva (nie do tego służy). Wszystko załatwia się w danym wątku by mogli skorzystać inni.

mikajlo napisał(a)

Witam,
pozwoliłem sobie napisać na pw.. i jakbyś miał chwile czasu to podsyłam linka do kodu, który nie chce mi "odpalić" tej wielojęzyczności..
http://www.filedropper.com/helloworldtrtar

(jakby co możesz odpisać w wątku na forum.. będzie dla innych ;) )
Pozdrawiam!
Michał!

Sprawdziłem twój projekt i odpowiedź jest taka: SOA #1
Na 100% rozwiązanie podałem ci już w pierwszym poście, którego najwyraźniej nie doczytałeś do końca:

MarekR22 napisał(a):

Pamiętaj tylko by pliki z tłumaczeniami znalazły się we właściwym katalogu tak by program mógł je swobodnie wczytać (budowanie w innym miejscu może to popsuć).

Plik *.qm ma się znaleźć w tej samej lokalizacji co plik wykonalny.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.