Qt – po polsku - Politechnika Wrocławska
Transkrypt
Qt – po polsku - Politechnika Wrocławska
Kodowanie znaków Tłumaczenie tekstów Qt – po polsku Bogdan Kreczmer [email protected] Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Wizualizacja danych sensorycznych c Copyright2013 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ą. Wizualizacja danych sensorycznych Qt – po polsku Kodowanie znaków Tłumaczenie tekstów Niniejsza prezentacja została wykonana przy użyciu systemu składu LATEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net Wizualizacja danych sensorycznych Qt – po polsku Kodowanie znaków Tłumaczenie tekstów 1 Kodowanie znaków Jawne zadawanie systemu kodowania napisów 2 Tłumaczenie tekstów Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Wizualizacja danych sensorycznych Qt – po polsku Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Znaki diakrytyczne #include #include <QApplication> <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 ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ”)); } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Znaki diakrytyczne #include #include <QApplication> <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 ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ”)); } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Kodowanie napisów w dla metod tr #include #include #include #include <QApplication> <QMessageBox> <QTextCodec> <iostream> using namespace std; int main( int argc, char ∗ argv[ ] ) { QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec ∗wKodowanieUTF8 = QTextCodec::codecForName(”UTF-8”); (wKodowanieUTF8) { QTextCodec::setCodecForTr(wKodowanieUTF8); } else cerr << ”!!! Brak kodowania: UTF-8” << endl; if Info.about(NULL,QObject::tr(”Informacja z tłumaczeniem”), QObject::tr(”Polskie znaki diakrytyczne:\n ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ”)); } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Kodowanie napisów w sensie języka C #include #include #include #include <QApplication> <QMessageBox> <QTextCodec> <iostream> using namespace std; int main( int argc, char ∗ argv[ ] ) { QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec ∗wKodowanieUTF8 = QTextCodec::codecForName(”UTF-8”); (wKodowanieUTF8) { QTextCodec::setCodecForTr(wKodowanieUTF8); } else cerr << ”!!! Brak kodowania: UTF-8” << endl; if 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 ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ”); } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Kodowanie napisów w sensie języka C #include #include #include #include <QApplication> <QMessageBox> <QTextCodec> <iostream> using namespace std; int main( int argc, char ∗ argv[ ] ) { QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec ∗wKodowanieUTF8 = QTextCodec::codecForName(”UTF-8”); (wKodowanieUTF8) { QTextCodec::setCodecForTr(wKodowanieUTF8); } else cerr << ”!!! Brak kodowania: UTF-8” << endl; if 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 ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ”); } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Kodowanie napisów w sensie języka C #include #include #include #include <QApplication> <QMessageBox> <QTextCodec> <iostream> using namespace std; int main( int argc, char ∗ argv[ ] ) { QApplication App( argc, argv ); QMessageBox Info(NULL); QTextCodec ∗wKodowanieUTF8 = QTextCodec::codecForName(”UTF-8”); (wKodowanieUTF8) { QTextCodec::setCodecForTr(wKodowanieUTF8); QTextCodec::setCodecForCStrings(wKodowanieUTF8); } else cerr << ”!!! Brak kodowania: UTF-8” << endl; if 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 ąęćłńóśźż ĄĘĆŁŃÓŚŹŻ”); } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Zmiana czcionki ... 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); ... } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Zmiana czcionki ... 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); ... } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Jawne zadawanie systemu kodowania napisów Zmiana czcionki ... 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); ... } Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Korzystanie z metod translacji Ż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) ); Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów Korzystanie z metod translacji na poziomie Qt Realizacja tłumaczenia Korzystanie z metod translacji 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”) }; Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów 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. Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów 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 Wizualizacja danych sensorycznych Kodowanie znaków Tłumaczenie tekstów 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” } ... return App.exec( ); } Wizualizacja danych sensorycznych << endl; Kodowanie znaków Tłumaczenie tekstów Koniec prezentacji Dziękuję za uwagę Wizualizacja danych sensorycznych Qt – po polsku