Користувальницькькі налаштування

Налаштування сайту


qt

Це стара версія документу!


Qt

Локализация

Поддержка переводов в программе

Согласно документации Qt, поддержка локализованного (а точнее - “интернационализованного” – т.н. “i18n”) интерфейса в программе включается следующим образом:

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();
}

Такой код загружает перевод, соответствующй системным настройкам языка. Вместо этого можно в явном виде загрузить нужный перевод:

    myappTranslator.load("myapp_uk_UA");

При этом необходимо, чтобы существовал соответствующий файл перевода “myapp_uk.qm”, которые генерируются из исходных файлов перевода “myapp_uk.ts”.

Обновление и компиляция переводов

Средствами Qt

Для того, чтобы файлы переводов можно было обновлять и компилировать, их необходимо перечислить в проектном файле Qt (например, myapp.pro)1):

TRANSLATIONS = myapp_uk.ts \
               myapp_ru.ts \
               myapp_en.ts

Тогда можно создать или обновить файлы переводов на основании подлежащих переводу строк, содержащихся в исходных файлах программы, перечисленных в разделах SOURCES и HEADERS этого же проектного файла:

lupdate myapp.pro

Или напрямую передать команде lupdate список исходных файлов и имя выходного ts-файла:

lupdate *.cpp *.h *.ui -ts myapp_uk.ts

После чего – скомпилировать из ts-файлов перевода qm-файлы, подходящие для загрузки нашей программой во время запуска:

lrelease myapp.pro

или

lrelease myapp_*.ts

Средствами CMake

Чтобы файлы переводов автоматически обновлялись и компилировались при каждой сборке программы, можно в файл CMakeLists.txt внести такие правки:

CMakeLists.txt
find_package(Qt5LinguistTools)
SET(Translation_files
  spectrophot_uk.ts
  spectrophot_ru.ts
)
QT5_CREATE_TRANSLATION(TranslationSrcs ${CMAKE_CURRENT_SOURCE_DIR} ${Translation_files})
...
ADD_EXECUTABLE(myapp ${Srcs} ${UISrcs} ${TranslationSrcs})
qt.1455099295.txt.bz2 · В останнє змінено: 2016/02/10 12:14 by wombat