translations/translations.pri
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
child 37 758a864f9613
--- a/translations/translations.pri	Tue Jul 06 15:10:48 2010 +0300
+++ b/translations/translations.pri	Wed Aug 18 10:37:55 2010 +0300
@@ -1,77 +1,80 @@
-defineReplace(prependAll) {
-    prepend = $$1
-    arglist = $$2
-    append  = $$3
-    for(a,arglist) {
-      result += $${prepend}$${a}$${append}
-    }
-    return ($$result)
-}
-
+qtPrepareTool(LCONVERT, lconvert)
 qtPrepareTool(LUPDATE, lupdate)
 LUPDATE += -locations relative -no-ui-lines
 
-###### Qt Libraries
-
-QT_TS        = ar cs da de es fr he hu ja_JP pl pt ru sk sl sv uk zh_CN zh_TW
+TS_TARGETS =
 
-ts-qt.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-                                -I../include -I../include/Qt \
-                                    3rdparty/phonon \
-                                    3rdparty/webkit \
-                                    activeqt \
-                                    corelib \
-                                    declarative \
-                                    gui \
-                                    multimedia \
-                                    network \
-                                    opengl \
-                                    plugins \
-                                    qt3support \
-                                    script \
-                                    scripttools \
-                                    sql \
-                                    svg \
-                                    xml \
-                                    xmlpatterns \
-                                -ts $$prependAll($$QT_SOURCE_TREE/translations/qt_,$$QT_TS,.ts))
-ts-qt.depends = sub-tools
+# meta target name, target name, lupdate base options, files
+defineTest(addTsTarget) {
+    cv = $${2}.commands
+    $$cv = cd $$QT_SOURCE_TREE/src && $$LUPDATE $$3 -ts $$4
+    export($$cv)
+    dv = $${1}.depends
+    $$dv += $$2
+    export($$dv)
+    TS_TARGETS += $$1 $$2
+    export(TS_TARGETS)
+}
 
-###### Designer
-
-ts-designer.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-                                    ../tools/designer/translations/translations.pro)
-ts-designer.depends = sub-tools
+# target basename, lupdate base options
+defineTest(addTsTargets) {
+    files = $$files($$PWD/$${1}_??.ts) $$files($$PWD/$${1}_??_??.ts)
+    for(file, files) {
+        lang = $$replace(file, .*_((.._)?..)\\.ts$, \\1)
+        addTsTarget(ts-$$lang, ts-$$1-$$lang, $$2, $$file)
+    }
+    addTsTarget(ts-untranslated, ts-$$1-untranslated, $$2, $$PWD/$${1}_untranslated.ts)
+    addTsTarget(ts-all, ts-$$1-all, $$2, $$PWD/$${1}_untranslated.ts $$files)
+}
 
-###### Linguist
-
-ts-linguist.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-                                    ../tools/linguist/linguist/linguist.pro)
-ts-linguist.depends = sub-tools
-
-###### Assistant
-
-ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-                                    ../tools/assistant/translations/translations.pro \
-                                    && $$LUPDATE \
-                                    ../tools/assistant/translations/qt_help.pro)
-ts-assistant.depends = sub-tools
-
-###### Qtconfig
+addTsTargets(qt, -I../include -I../include/Qt \
+    3rdparty/phonon \
+    3rdparty/webkit \
+    activeqt \
+    corelib \
+    declarative \
+    gui \
+    multimedia \
+    network \
+    opengl \
+    plugins \
+    qt3support \
+    script \
+    scripttools \
+    sql \
+    svg \
+    xml \
+    xmlpatterns \
+)
+addTsTargets(designer, ../tools/designer/designer.pro)
+addTsTargets(linguist, ../tools/linguist/linguist/linguist.pro)
+addTsTargets(assistant, ../tools/assistant/tools/assistant/assistant.pro)
+addTsTargets(qt_help, ../tools/assistant/lib/lib.pro)
+addTsTargets(qtconfig, ../tools/qtconfig/qtconfig.pro)
+addTsTargets(qvfb, ../tools/qvfb/qvfb.pro)
 
-ts-qtconfig.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-                                    ../tools/qtconfig/translations/translations.pro)
-ts-qtconfig.depends = sub-tools
-
-###### Qvfp
+check-ts.commands = (cd $$PWD && perl check-ts.pl)
+check-ts.depends = ts-all
 
-ts-qvfb.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-                                    ../tools/qvfb/translations/translations.pro)
-ts-qvfb.depends = sub-tools
+isEqual(QMAKE_DIR_SEP, /) {
+    commit-ts.commands = \
+        cd $$PWD/..; \
+        for f in `git diff-files --name-only translations/*_??.ts`; do \
+            $$LCONVERT -locations none -i \$\$f -o \$\$f; \
+        done; \
+        git add translations/*_??.ts && git commit
+} else {
+    wd = $$replace(PWD, /, \\)\\..
+    commit-ts.commands = \
+        cd $$wd && \
+        for /f usebackq %%f in (`git diff-files --name-only translations/*_??.ts`) do \
+            $$LCONVERT -locations none -i %%f -o %%f $$escape_expand(\\n\\t) \
+        cd $$wd && git add translations/*_??.ts && git commit
+}
 
-###### Overall Rules
+ts.commands = \
+    @echo \"The \'ts\' target has been removed in favor of more fine-grained targets.\" && \
+    echo \"Use \'ts-<target>-<lang>\' or \'ts-<lang>\' instead. To add a language,\" && \
+    echo \"use \'untranslated\' for <lang>, rename the files and re-run \'qmake\'.\"
 
-ts.depends = ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb
-
-QMAKE_EXTRA_TARGETS += ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb \
-                       ts
+QMAKE_EXTRA_TARGETS += $$unique(TS_TARGETS) ts commit-ts check-ts