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

Podobne dokumenty