LINUX.ORG.RU

Я победил переводы программ на Qt + cmake и имею сказать много матов

 , ,


1

3

Во-первых, я сам не люблю писать документацию, но ска, хотя бы пример использования то авторы могли накропать в доку. В общем держите:

function(IWANTTRANSLATIONS PROJECT )
    qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES ru)

    qt_add_translations(${PROJECT} QM_FILES ${TS_FILES}
        INCLUDE_DIRECTORIES ${PROJECT})
    add_dependencies(${PROJECT} ${PROJECT}_lupdate)
    add_dependencies(${PROJECT} update_translations)
    set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT}_ru.qm
        PROPERTIES QT_RESOURCE_ALIAS "${PROJECT}_ru_RU.qm"
    )
    qt_add_resources(${PROJECT} ${PROJECT}_translations.qrc
        PREFIX /translations
            FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT}_ru.qm)
endfunction()

Можно объявить в корневом CMakeFiles.txt и потом в подкаталогах накатывать с помощью iwanttranslations(projectname)

Похлопайте мне что ли, я кресло прожег пока разбирался.

Похлопайте мне что ли, я кресло прожег пока разбирался….

если ты программист то ты сделал свою работу за которую тебе платят деньги, что не так?

если ты не программист - занимайся своими делами а не делами программирования!

anonymous2 ★★★★★
()

Ммм.. сладкая и вкусная макрокаша вместо нормальных

    ShowMessage(Qt::Translate(Translate::TR_USER_ISWRONG), number);

Где в человекочитаемом файле объявляется массив значений

enum Translate {
    ...
    TR_USER_ISWRONG,
    ...

TranslateValues[] = {
    ...
    [TR_USER_ISWRONG] = "Пацан, твой %d - фигня"
    ...

Ну или вообще во внешнем файле, который будет интегрироваться:

    "translations" : {
        ...
        "TR_USER_ISWRONG" : "Пацан, твой %d - фигня",
        ...
PPP328 ★★★★★
()