feat: support dtk_translations
authorIceyer <me@iceyer.net>
Thu, 12 Apr 2018 11:06:47 +0000 (19:06 +0800)
committerIceyer <me@iceyer.net>
Thu, 12 Apr 2018 12:27:17 +0000 (20:27 +0800)
Change-Id: Ibf3bb150c7861cee42fbb93ff8a95aa35cd3dce5

debian/libdtkcore-dev.install
dtkcore.pro
src/dtk_build.prf
src/dtk_lib.prf [new file with mode: 0644]
src/dtk_module.prf
src/dtk_translation.prf [new file with mode: 0755]
src/src.pro
tools/tools.pro

index b549f55677112c3fc4adedb46eb50f601feac2ea..f1f7613e75cd4799e83adef2d96faf2138212972 100644 (file)
@@ -3,4 +3,3 @@ usr/include
 usr/lib/*/pkgconfig/*.pc
 usr/lib/*/cmake/*/*.cmake
 usr/lib/*/qt5/*
-usr/lib/*/libdtk/modules/*
index 370c5fd0920fee3d5b776afaa9ec287b8f706e42..2ce7963c093d1047743ad29ebc08de083b45ec33 100644 (file)
@@ -1,9 +1,2 @@
-TEMPLATE = subdirs
+include($$PWD/src/dtk_lib.prf)
 
-CONFIG += ordered
-
-SUBDIRS +=   \
-    src \
-    tests
-
-!mac:!win*: SUBDIRS += tools
index 52115669d71cb89ae59db738b2c13baf456e6cb9..4414c0606147ca3b45a14bd06e7a858241a72f48 100644 (file)
@@ -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 (file)
index 0000000..b57d004
--- /dev/null
@@ -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
index fc218f073a9fe262625a41fe4bdcb7fa6d6d680c..fa76bb04c2c0b08f164d2bf9f8da4fe33096aa67 100644 (file)
@@ -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 (executable)
index 0000000..4d4efa0
--- /dev/null
@@ -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
+        #<RCC>
+        #    <qresource prefix="/dtk/translations">
+        #        <file>dtkwidget2_am_ET.qm</file>
+        #        <file>dtkwidget2_ar.qm</file>
+        #        <file>dtkwidget2_ast.qm</file>
+        #    </qresource>
+        #</RCC>
+        QRC_PATH = $$ROOT_DIR/translations/$${BASENAME}_translations.qrc
+        message ("Create static translations file $${QRC_PATH}")
+
+        QRC_CONTENT = "<RCC>"
+        QRC_CONTENT += "    <qresource prefix=\"/dtk/translations\">"
+
+        QM_FILE_LIST = $$files($$ROOT_DIR/translations/*.qm)
+        for(qmfile, QM_FILE_LIST) {
+            QRC_CONTENT += "        <file>$$basename(qmfile)</file>"
+        }
+        QRC_CONTENT += "    </qresource>"
+        QRC_CONTENT += "</RCC>"
+        write_file($$QRC_PATH, QRC_CONTENT) | error("Aborting.")
+    }
+}
index ef5638a76eb86dc414e0ed996a1b20a104cdfc95..2414e87290de372947df5e80fa49121b4860be4c 100644 (file)
@@ -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
index aeaeb47f3360eea89d2971b1b8b3db493022e983..b658081473638ac7be8f88579e9e4fb341c404e9 100644 (file)
@@ -1,6 +1,3 @@
 TEMPLATE = subdirs
 
-CONFIG += ordered
-
-SUBDIRS +=   \
-    settings \
+!mac:!win*: SUBDIRS += settings