diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro
index 3fff9ac90..eefef5a18 100644
--- a/bitcoin-qt.pro
+++ b/bitcoin-qt.pro
@@ -168,10 +168,25 @@ FORMS += \
src/qt/forms/askpassphrasedialog.ui
CODECFORTR = UTF-8
+
# for lrelease/lupdate
TRANSLATIONS = src/qt/locale/bitcoin_nl.ts src/qt/locale/bitcoin_de.ts \
src/qt/locale/bitcoin_ru.ts
+isEmpty(QMAKE_LRELEASE) {
+ win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe
+ else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
+}
+isEmpty(TS_DIR):TS_DIR = src/qt/locale
+# automatically build translations, so they can be included in resource file
+TSQM.name = lrelease ${QMAKE_FILE_IN}
+TSQM.input = TRANSLATIONS
+TSQM.output = $$TS_DIR/${QMAKE_FILE_BASE}.qm
+TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN}
+TSQM.CONFIG = no_link
+QMAKE_EXTRA_COMPILERS += TSQM
+bPRE_TARGETDEPS += compiler_TSQM_make_all
+
OTHER_FILES += \
README.rst
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index daba512ad..60a907420 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -120,7 +120,7 @@ int main(int argc, char *argv[])
// Load language file for system locale
QString locale = QLocale::system().name();
QTranslator translator;
- translator.load("bitcoin_"+locale);
+ translator.load(":/translations/"+locale);
app.installTranslator(&translator);
QSplashScreen splash(QPixmap(":/images/splash"), 0);
diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc
index be0e4dce6..2985bb60e 100644
--- a/src/qt/bitcoin.qrc
+++ b/src/qt/bitcoin.qrc
@@ -45,4 +45,9 @@
res/movies/update_spinner.mng
+
+ locale/bitcoin_de.qm
+ locale/bitcoin_nl.qm
+ locale/bitcoin_ru.qm
+