diff --git a/qtcreator.pro b/qtcreator.pro
index b2d042cd1ada0d41eb7fe70ff9edafac43176e3a..d6ee4e60365a4ca9c5373f6971c01f4d5dd0a884 100644
--- a/qtcreator.pro
+++ b/qtcreator.pro
@@ -12,11 +12,3 @@ CONFIG   += ordered
 
 SUBDIRS = src share
 unix:!macx:!equals(_PRO_FILE_PWD_, $$OUT_PWD):SUBDIRS += bin
-
-# for Qt Creator translations
-QTC_BUILD_ROOT = $$PWD
-QTC_INSTALL_TRANSLATIONS = $$PWD/translations
-
-include(translations/translations.pri)
-translations.path = $$QTC_INSTALL_TRANSLATIONS
-translations.files = $$QTC_INSTALL_TRANSLATIONS/*.qm
diff --git a/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts
similarity index 100%
rename from translations/qtcreator_de.ts
rename to share/qtcreator/translations/qtcreator_de.ts
diff --git a/share/qtcreator/translations/translations.pro b/share/qtcreator/translations/translations.pro
new file mode 100644
index 0000000000000000000000000000000000000000..54b10f94e9d74322331db6a2b8f42cc31c4c0944
--- /dev/null
+++ b/share/qtcreator/translations/translations.pro
@@ -0,0 +1,49 @@
+IDE_BUILD_TREE = $$OUT_PWD/../../..
+include(../../../qtcreator.pri)
+
+TRANSLATIONS = de
+
+# var, prepend, append
+defineReplace(prependAll) {
+    for(a,$$1):result += $$2$${a}$$3
+    return($$result)
+}
+
+LUPDATE = $$targetPath($$[QT_INSTALL_PREFIX]/bin/lupdate) -locations relative -no-ui-lines
+LRELEASE = $$targetPath($$[QT_INSTALL_PREFIX]/bin/lrelease)
+
+TS_FILES = $$prependAll(TRANSLATIONS, $$PWD/qtcreator_,.ts)
+
+ts.commands = (cd $$IDE_SOURCE_TREE && $$LUPDATE src -ts $$TS_FILES)
+QMAKE_EXTRA_TARGETS += ts
+
+contains(TEMPLATE, vc.*)|contains(TEMPLATE_PREFIX, vc):vcproj = 1
+
+TEMPLATE = app
+TARGET = phony_target2
+
+updateqm.target = $$IDE_DATA_DIR/translations
+updateqm.input = TS_FILES
+updateqm.output = ${QMAKE_FILE_BASE}.qm
+isEmpty(vcproj):updateqm.variable_out = PRE_TARGETDEPS
+updateqm.commands = $$LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
+updateqm.name = LRELEASE ${QMAKE_FILE_IN}
+updateqm.CONFIG += no_link
+QMAKE_EXTRA_COMPILERS += updateqm
+
+isEmpty(vcproj) {
+    QMAKE_LINK = : IGNORE REST
+    OBJECTS_DIR =
+    win32:CONFIG -= embed_manifest_exe
+} else {
+    PHONY_DEPS = .
+    phony_src.input = PHONY_DEPS
+    phony_src.output = phony.c
+    phony_src.commands = echo int main() { return 0; } > phony.c
+    phony_src.CONFIG += combine
+    QMAKE_EXTRA_COMPILERS += phony_src
+}
+
+qmfiles.files = $$prependAll(TRANSLATIONS, $$OUT_PWD/qtcreator_,.qm)
+qmfiles.path = /share/qtcreator/translations
+INSTALLS += qmfiles
diff --git a/share/share.pro b/share/share.pro
index a997a8183fa1ed706227885e6cc5939aecca059c..bbf224f2042a0946844637acb4c26ddfb8bd1051 100644
--- a/share/share.pro
+++ b/share/share.pro
@@ -1,2 +1,2 @@
 TEMPLATE = subdirs
-SUBDIRS = qtcreator/static.pro
+SUBDIRS = qtcreator/static.pro qtcreator/translations
diff --git a/translations/translations.pri b/translations/translations.pri
deleted file mode 100644
index 0bcd58dcc271351d5105221e7b89fa53bb7ce355..0000000000000000000000000000000000000000
--- a/translations/translations.pri
+++ /dev/null
@@ -1,33 +0,0 @@
-defineReplace(prependAll) {
-    prepend = $$1
-    arglist = $$2
-    append  = $$3
-    for(a,arglist) {
-      result += $${prepend}$${a}$${append}
-    }
-    return ($$result)
-}
-
-defineReplace(fixPath) {
-WIN {
-    return ($$replace($$1, /, \))
-} ELSE {
-    return ($$1)
-}
-}
-
-LUPDATE = $$fixPath($$[QT_INSTALL_PREFIX]/bin/lupdate) -locations relative -no-ui-lines
-LRELEASE = $$fixPath($$[QT_INSTALL_PREFIX]/bin/lrelease)
-
-
-###### Qt Creator
-
-QTC_TS = de fr zh_CN untranslated ar es iw ja_JP pl pt ru sk sv uk zh_TW
-
-ts.commands = (cd $$QTC_BUILD_ROOT && \
-               $$LUPDATE share src \
-                         -ts $$prependAll($$QTC_INSTALL_TRANSLATIONS/qtcreator_,$$QTC_TS,.ts))
-
-qm.commands = $$LRELEASE $$prependAll($$QTC_INSTALL_TRANSLATIONS/qtcreator_,$$QTC_TS,.ts)
-
-QMAKE_EXTRA_TARGETS += ts qm