Qt po polsku Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową. Qt po polsku
Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net Qt po polsku
1 Kodowanie znaków 2 Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Qt po polsku
Znaki diakrytyczne Kodowanie znaków #include <QApplication> #include <QMessageBox> int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); Info.about(NULL,QObject::tr( Informacja z tłumaczeniem ), QObject::tr( Polskie znaki diakrytyczne:\n ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ ));
Znaki diakrytyczne Kodowanie znaków #include <QApplication> #include <QMessageBox> int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); Info.about(NULL,QObject::tr( Informacja z tłumaczeniem ), QObject::tr( Polskie znaki diakrytyczne:\n ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ ));
Kodowanie napisów w dla metod tr #include <QApplication> #include <QMessageBox> #include <QTextCodec> #include <iostream> using namespace std; int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec wkodowanieutf8 = QTextCodec::codecForName( UTF-8 ); if (wkodowanieutf8) QTextCodec::setCodecForTr(wKodowanieUTF8); else cerr <<!!! Brak kodowania: UTF-8 << endl; Info.about(NULL,QObject::tr( Informacja z tłumaczeniem ), QObject::tr( Polskie znaki diakrytyczne:\n ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ ));
Kodowanie napisów w sensie języka C #include <QApplication> #include <QMessageBox> #include <QTextCodec> #include <iostream> using namespace std; int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec wkodowanieutf8 = QTextCodec::codecForName( UTF-8 ); if (wkodowanieutf8) QTextCodec::setCodecForTr(wKodowanieUTF8); else cerr <<!!! Brak kodowania: UTF-8 << endl; Info.about(NULL,QObject::tr( Informacja ze zwykłym łańcuchem znaków ), Ale bajzel!!!\n Co z tymi znakami??!!\n Polskie znaki diakrytyczne:\n ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ );
Kodowanie napisów w sensie języka C #include <QApplication> #include <QMessageBox> #include <QTextCodec> #include <iostream> using namespace std; int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec wkodowanieutf8 = QTextCodec::codecForName( UTF-8 ); if (wkodowanieutf8) QTextCodec::setCodecForTr(wKodowanieUTF8); else cerr <<!!! Brak kodowania: UTF-8 << endl; Info.about(NULL,QObject::tr( Informacja ze zwykłym łańcuchem znaków ), Ale bajzel!!!\n Co z tymi znakami??!!\n Polskie znaki diakrytyczne:\n ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ );
Kodowanie napisów w sensie języka C #include <QApplication> #include <QMessageBox> #include <QTextCodec> #include <iostream> using namespace std; int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec wkodowanieutf8 = QTextCodec::codecForName( UTF-8 ); if (wkodowanieutf8) QTextCodec::setCodecForTr(wKodowanieUTF8); QTextCodec::setCodecForCStrings(wKodowanieUTF8); else cerr <<!!! Brak kodowania: UTF-8 << endl; Info.about(NULL,QObject::tr( Informacja ze zwykłym łańcuchem znaków ), Ale bajzel!!!\n Co z tymi znakami??!!\n Polskie znaki diakrytyczne:\n ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ );
Zmiana czcionki Kodowanie znaków... int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec wkodowanieutf8 = QTextCodec::codecForName( UTF-8 ); QFont CzcionkaAplikacji(QApplication::font()); CzcionkaAplikacji.setFamily( Fixed [Misc] ); CzcionkaAplikacji.setPointSize( 14 ); CzcionkaAplikacji.setBold(true); CzcionkaAplikacji.setItalic(true); CzcionkaAplikacji.setUnderline(true); QApplication::setFont(CzcionkaAplikacji);...
Zmiana czcionki Kodowanie znaków... int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec wkodowanieutf8 = QTextCodec::codecForName( UTF-8 ); QFont CzcionkaAplikacji(QApplication::font()); CzcionkaAplikacji.setFamily( Fixed [Misc] ); CzcionkaAplikacji.setPointSize( 14 ); CzcionkaAplikacji.setBold(true); CzcionkaAplikacji.setItalic(true); CzcionkaAplikacji.setUnderline(true); QApplication::setFont(CzcionkaAplikacji);...
Zmiana czcionki Kodowanie znaków... int main( int argc, char argv[ ] ) QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec wkodowanieutf8 = QTextCodec::codecForName( UTF-8 ); QFont CzcionkaAplikacji(QApplication::font()); CzcionkaAplikacji.setFamily( Fixed [Misc] ); CzcionkaAplikacji.setPointSize( 14 ); CzcionkaAplikacji.setBold(true); CzcionkaAplikacji.setItalic(true); CzcionkaAplikacji.setUnderline(true); QApplication::setFont(CzcionkaAplikacji);...
Korzystanie z metod translacji Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Żle: const char wnapis = To należy przetłumaczyć ; QString TlumaczonyNapis = wnapis; Dobrze: QString TlumaczonyNapis = tr( To należy przetłumaczyć ); Żle: QString NazwaPliku;... statusbar( ) >message( tr( Nie znaleziono pliku: + NazwaPliku) ); Dobrze: statusbar( ) >message( tr( Nie znaleziono pliku: %1 ).arg(nazwapliku) );
Korzystanie z metod translacji Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Nie zaleca się podstawiania do zmiennych napisów, które mają być tlumaczone. Jeżeli jest to konieczne, należy to uczynić z zastosowaniem makr QT TR NOOP lub QT TRANSLATION NOOP, np. const char const TabNapisow[ ] = QT TR NOOP( Napis tłumaczony 1 ), QT TR NOOP( Napis tłumaczony 2 ) ;
Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Podstawowe kroki procedury tłumaczenia 1 Uruchomienie programu lupdate w celu wydzielenia napisów podlegających tłumaczeniu. 2 Tłumaczenie napisów z zastosowaniem aplikacji linguist (Qt Linguist). 3 Uruchomienie lrelease w celu generacji binarnej postaci pliku tłumaczeń (rozszerzenie.qm) ładowalnego przez obiekt klasy QTranslator.
Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Tłumaczenie przykład praktycznej realizacji 0. Jeżeli w aplikacji są napisy po polsku w kodowaniu UTF-8, to wystarczy dodać do projektu wpis: TRANSLATIONS = skromny edytor en.ts Jeżeli kodowanie jest inne np. Latin2 (ISO 8859-2), to niezbędny jest dodatkowy wpis: DEFAULTCODEC = ISO-8859-2 W przypadku realizacji tłumaczeń angielskich napisów w aplikacji na polski nie jest potrzebna dodatkowa informacja o kodowaniu i wystarczy wpis: TRANSLATIONS = skromny edytor pl.ts 1 lupdate -verbose skromny edytor.pro skromny edytor pl.ts 2 linguist skromny edytor pl.ts skromny edytor pl.ts 3 lrelease -verbose skromny edytor.pro skromny edytor pl.qm
Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Najprostszy przykład ładowania tłumaczeń int main(int argc, char argv[ ] ) QApplication App(argc,argv);... QTranslator TlumaczPL; if ( TlumaczPL.load( skromny edytor pl.qm,. ) ) App.installTranslator(&TlumaczPL); else cerr << Plik skromny edytor pl.qm nie zostal zaladowany << endl;... return App.exec( );
Koniec prezentacji Dziękuję za uwagę Qt po polsku