From: Iceyer Date: Thu, 12 Apr 2018 11:06:47 +0000 (+0800) Subject: feat: support dtk_translations X-Git-Tag: archive/raspbian/5.7.12-2+rpi1^2~122^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a0e4443ee7ef29adf946bf8fcf5ba5e5fcc26d88;p=dtkcore.git feat: support dtk_translations Change-Id: Ibf3bb150c7861cee42fbb93ff8a95aa35cd3dce5 --- diff --git a/debian/libdtkcore-dev.install b/debian/libdtkcore-dev.install index b549f55..f1f7613 100644 --- a/debian/libdtkcore-dev.install +++ b/debian/libdtkcore-dev.install @@ -3,4 +3,3 @@ usr/include usr/lib/*/pkgconfig/*.pc usr/lib/*/cmake/*/*.cmake usr/lib/*/qt5/* -usr/lib/*/libdtk/modules/* diff --git a/dtkcore.pro b/dtkcore.pro index 370c5fd..2ce7963 100644 --- a/dtkcore.pro +++ b/dtkcore.pro @@ -1,9 +1,2 @@ -TEMPLATE = subdirs +include($$PWD/src/dtk_lib.prf) -CONFIG += ordered - -SUBDIRS += \ - src \ - tests - -!mac:!win*: SUBDIRS += tools diff --git a/src/dtk_build.prf b/src/dtk_build.prf index 5211566..4414c06 100644 --- a/src/dtk_build.prf +++ b/src/dtk_build.prf @@ -77,3 +77,7 @@ isEmpty(includes.path): includes.path = $$quote($$DTK_INCLUDEPATH/D$$upper($$mem DEFINES += DTK_STATIC_LIB CONFIG += staticlib } + +!isEmpty(DTK_STATIC_TRANSLATION) { + DEFINES += DTK_STATIC_TRANSLATION +} diff --git a/src/dtk_lib.prf b/src/dtk_lib.prf new file mode 100644 index 0000000..b57d004 --- /dev/null +++ b/src/dtk_lib.prf @@ -0,0 +1,13 @@ +exists($$_PRO_FILE_PWD_/src/dtk_translation.prf) { + include($$_PRO_FILE_PWD_/src/dtk_translation.prf) +} else { + load(dtk_translation) +} + +TEMPLATE = subdirs +CONFIG += ordered + +exists($$_PRO_FILE_PWD_/src) SUBDIRS += src +exists($$_PRO_FILE_PWD_/tools) SUBDIRS += tools +exists($$_PRO_FILE_PWD_/tests) SUBDIRS += tests +exists($$_PRO_FILE_PWD_/examples) SUBDIRS += examples diff --git a/src/dtk_module.prf b/src/dtk_module.prf index fc218f0..fa76bb0 100644 --- a/src/dtk_module.prf +++ b/src/dtk_module.prf @@ -3,17 +3,6 @@ isEmpty(DTK_MODULE): error("DTK_MODULE must not empty") isEmpty(includes.path): error("includes.path must not empty, please load(dtk_build) first!") isEmpty(target.path): error("target.path must not empty, , please load(dtk_build) first!") - -# ----------------------- -# Config pkg-config -QMAKE_PKGCONFIG_VERSION = $$VERSION -QMAKE_PKGCONFIG_DESTDIR = pkgconfig -QMAKE_PKGCONFIG_NAME = DTK_$$upper($$replace(TARGET, "dtk", "")) -QMAKE_PKGCONFIG_DESCRIPTION = Deepin Tool Kit $$TARGET header files -QMAKE_PKGCONFIG_INCDIR = $$includes.path -QMAKE_PKGCONFIG_LIBDIR = $$target.path - - # ----------------------- # Config Qt module MODULE_ID=$$DTK_MODULE @@ -21,6 +10,7 @@ mod_inst_pfx=$$_PRO_FILE_PWD_ MODULE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE_ID}.pri module_libs = $$target.path MODULE_INCLUDES = $$includes.path +DTK_MODULE_DEPENDS=$$find(QT, dtk*) message("config qt module: $$MODULE_ID") message("write $$MODULE_PRI to: $$mod_inst_pfx") @@ -107,3 +97,29 @@ qt_module.files = $$MODULE_PRI qt_module.path = $${QT_HOST_DATA}/mkspecs/modules INSTALLS += qt_module + + +# ----------------------- +# Config pkg-config +QMAKE_PKGCONFIG_VERSION = $$VERSION +QMAKE_PKGCONFIG_DESTDIR = pkgconfig +QMAKE_PKGCONFIG_NAME = DTK_$$upper($$replace(TARGET, "dtk", "")) +QMAKE_PKGCONFIG_DESCRIPTION = Deepin Tool Kit $$TARGET header files +QMAKE_PKGCONFIG_REQUIRES += $$DTK_MODULE_DEPENDS +QMAKE_PKGCONFIG_INCDIR = $$includes.path +QMAKE_PKGCONFIG_LIBDIR = $$target.path + + +# ----------------------- +# Config translations +!isEmpty(DTK_STATIC_TRANSLATION) { + QRC_PATH = $$mod_inst_pfx/../translations/$${TARGET}_translations.qrc + RESOURCES += $$QRC_PATH +} + +TRANSLATIONS += $$mod_inst_pfx/.../translations/* + +dtk_translations.path = $$PREFIX/share/$${TARGET}/translations +dtk_translations.files = $$mod_inst_pfx/../translations/*.qm + +INSTALLS += dtk_translations diff --git a/src/dtk_translation.prf b/src/dtk_translation.prf new file mode 100755 index 0000000..4d4efa0 --- /dev/null +++ b/src/dtk_translation.prf @@ -0,0 +1,46 @@ +message ("Process dtk translation") +message ("Add DTK_NO_TRANSLATION=YES to qmake arguments skip this") +message ("Add DTK_STATIC_TRANSLATION=YES to add support static translations") + +# TODO: check lrelease/lupdate exist + +ROOT_DIR = $$_PRO_FILE_PWD_ + +BASENAME = $$basename(_PRO_FILE_) +BASENAME = $$split(BASENAME, .) +BASENAME = $$first(BASENAME) + +isEmpty(DTK_NO_TRANSLATION) { +# system(lupdate $$_PRO_FILE_) | error("Failed to lupdate") + + TRANSLATIONS = $$files($$ROOT_DIR/translations/*.ts) + for(tsfile, TRANSLATIONS) { + qmfile = $$replace(tsfile, .ts$, .qm) + system(lrelease $$tsfile -qm $$qmfile) | error("Failed to lrelease") + } + + # create static translations qrc file + !isEmpty(DTK_STATIC_TRANSLATION) { + # qrc template + # + # + # dtkwidget2_am_ET.qm + # dtkwidget2_ar.qm + # dtkwidget2_ast.qm + # + # + QRC_PATH = $$ROOT_DIR/translations/$${BASENAME}_translations.qrc + message ("Create static translations file $${QRC_PATH}") + + QRC_CONTENT = "" + QRC_CONTENT += " " + + QM_FILE_LIST = $$files($$ROOT_DIR/translations/*.qm) + for(qmfile, QM_FILE_LIST) { + QRC_CONTENT += " $$basename(qmfile)" + } + QRC_CONTENT += " " + QRC_CONTENT += "" + write_file($$QRC_PATH, QRC_CONTENT) | error("Aborting.") + } +} diff --git a/src/src.pro b/src/src.pro index ef5638a..2414e87 100644 --- a/src/src.pro +++ b/src/src.pro @@ -82,22 +82,10 @@ INSTALLS += includes target #cmake include(dtk_cmake.prf) + #qt module include(dtk_module.prf) prf.files+= $$PWD/*.prf prf.path = $${QT_HOST_DATA}/mkspecs/features INSTALLS += prf - -# ----------------------------------------------- -# TODO: remove this, replace with dtk_build - -pri_dev.files += $$PWD/version.pri - -isEmpty(LIB_INSTALL_DIR) { - pri_dev.path = $$PREFIX/lib/libdtk/modules -} else { - pri_dev.path = $$LIB_INSTALL_DIR/libdtk/modules -} - -INSTALLS += pri_dev diff --git a/tools/tools.pro b/tools/tools.pro index aeaeb47..b658081 100644 --- a/tools/tools.pro +++ b/tools/tools.pro @@ -1,6 +1,3 @@ TEMPLATE = subdirs -CONFIG += ordered - -SUBDIRS += \ - settings \ +!mac:!win*: SUBDIRS += settings