Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 109 стр.

UptoLike

109
файл) из .TS файла, пригодный только для конечного использования. TS файлы можно
рассматривать как исходные файлы, а QM, как объектные.
Обычно для каждого релиза приложения данные шаги необходимо повторить. Утилита lupdate
принимает это во внимание и позволяет использовать заново уже имеющиеся переводы.
Заметим также, что перед тем как запустить утилиту lupdate необходимо верным образом
подготовить проектный файл (.pro). Пример подобного проектного файла:
HEADERS = funnydialog.h \
wackywidget.h
SOURCES = funnydialog.cpp \
main.cpp \
wackywidget.cpp
FORMS = fancybox.ui
TRANSLATIONS = superapp_dk.ts \
superapp_fi.ts \
superapp_no.ts \
superapp_se.ts
В этом примере используются Датский, Финский, Норвежский и Шведский языки (это
автоматически распознаётся по окончаниям _dk, _fi, _no, _se). В проекте необходимо вызвать методы
QTranslator::load() с указанием файла перевода и подходящий файл перевода для языка
пользователя, а затем установить его используя функцию QCoreApplication::installTranslator().
Типичный пример функции main проекта:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(),
QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
QTranslator myappTranslator;
myappTranslator.load("myapp_" + QLocale::system().name());
app.installTranslator(&myappTranslator);
...
return app.exec();
}
9.4.3. Кодировки
В Qt и MeeGo класс QString внутри использует кодировку Unicode 5.1 — т.е. каждый язык мира
может быть обработан абсолютно прозрачным образом. Однако, иногда может понадобиться
использование различных кодировок. Например, обработка текста в кодировке KOI8-R и её перевод в
UTF-8. Для этого применяется специальный класс QTextCodec. С его помощью перевод из
кириллической кодировки cp1251 в UTF-8 может быть осуществлён как:
QByteArray encodedString = ...; // some cp1251 encoded text
QTextCodec *codec = QTextCodec::codecForName("cp1251");
QString string = codec->toUnicode(encodedString);
В идеале, для переносимости необходимо везде использовать кодировку UTF-8 и UTF-16.
Наиболее необходимая кодировка для поддержки (в контексте локали) выдаётся функцией
QTextCodec::codecForLocale().