diff --git a/src/linguist/lconvert/main.cpp b/src/linguist/lconvert/main.cpp
index 4e26adbbbfa85cc221328420759280d7221ebdd5..2dc07db514d91eaa94758783b127de1031703c42 100644
--- a/src/linguist/lconvert/main.cpp
+++ b/src/linguist/lconvert/main.cpp
@@ -94,6 +94,8 @@ static int usage(const QStringList &args)
         "           Drop obsolete messages.\n\n"
         "    -no-finished\n"
         "           Drop finished messages.\n\n"
+        "    -no-untranslated\n"
+        "           Drop untranslated messages.\n\n"
         "    -sort-contexts\n"
         "           Sort contexts in output TS file alphabetically.\n\n"
         "    -locations {absolute|relative|none}\n"
@@ -145,6 +147,7 @@ int main(int argc, char *argv[])
     bool dropTranslations = false;
     bool noObsolete = false;
     bool noFinished = false;
+    bool noUntranslated = false;
     bool verbose = false;
     bool noUiLines = false;
     Translator::LocationsType locations = Translator::DefaultLocations;
@@ -199,6 +202,8 @@ int main(int argc, char *argv[])
             noObsolete = true;
         } else if (args[i] == QLatin1String("-no-finished")) {
             noFinished = true;
+        } else if (args[i] == QLatin1String("-no-untranslated")) {
+            noUntranslated = true;
         } else if (args[i] == QLatin1String("-sort-contexts")) {
             cd.m_sortContexts = true;
         } else if (args[i] == QLatin1String("-locations")) {
@@ -256,6 +261,8 @@ int main(int argc, char *argv[])
         tr.stripObsoleteMessages();
     if (noFinished)
         tr.stripFinishedMessages();
+    if (noUntranslated)
+        tr.stripUntranslatedMessages();
     if (dropTranslations)
         tr.dropTranslations();
     if (noUiLines)
diff --git a/src/linguist/shared/translator.cpp b/src/linguist/shared/translator.cpp
index 9ef7174261cbdc5a8fe54a5c2364918c9fd9db40..5b0538d4e19e7a0b8f50cddbcb726dcc39a5418e 100644
--- a/src/linguist/shared/translator.cpp
+++ b/src/linguist/shared/translator.cpp
@@ -420,6 +420,16 @@ void Translator::stripFinishedMessages()
     m_indexOk = false;
 }
 
+void Translator::stripUntranslatedMessages()
+{
+    for (TMM::Iterator it = m_messages.begin(); it != m_messages.end(); )
+        if (!it->isTranslated())
+            it = m_messages.erase(it);
+        else
+            ++it;
+    m_indexOk = false;
+}
+
 void Translator::stripEmptyContexts()
 {
     for (TMM::Iterator it = m_messages.begin(); it != m_messages.end();)
diff --git a/src/linguist/shared/translator.h b/src/linguist/shared/translator.h
index 57a154008ad5978a98bf42bdad618be8434d8462..8919a13df7fbaebb3036760503e21159b15c3c50 100644
--- a/src/linguist/shared/translator.h
+++ b/src/linguist/shared/translator.h
@@ -128,6 +128,7 @@ public:
 
     void stripObsoleteMessages();
     void stripFinishedMessages();
+    void stripUntranslatedMessages();
     void stripEmptyContexts();
     void stripNonPluralForms();
     void stripIdenticalSourceTranslations();
diff --git a/tests/auto/linguist/lconvert/data/untranslated.ts b/tests/auto/linguist/lconvert/data/untranslated.ts
new file mode 100644
index 0000000000000000000000000000000000000000..89007df26ebb239e83a7e011b5206ed4bdcee67b
--- /dev/null
+++ b/tests/auto/linguist/lconvert/data/untranslated.ts
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+<context>
+    <name>a</name>
+    <message>
+        <location filename="a.cpp" line="93"/>
+        <source>One string</source>
+        <translation>Ein Gesimsband</translation>
+    </message>
+    <message>
+        <location filename="a.cpp" line="380"/>
+        <source>Untranslated String</source>
+        <translation></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="a.cpp" line="456"/>
+        <source>%n things</source>
+        <translation>
+            <numerusform></numerusform>
+            <numerusform>%n Dinger</numerusform>
+        </translation>
+    </message>
+</context>
+</TS>
diff --git a/tests/auto/linguist/lconvert/data/untranslated.ts.out b/tests/auto/linguist/lconvert/data/untranslated.ts.out
new file mode 100644
index 0000000000000000000000000000000000000000..6244f9db8672d64b0ac2077db878cc01a325fb78
--- /dev/null
+++ b/tests/auto/linguist/lconvert/data/untranslated.ts.out
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+<context>
+    <name>a</name>
+    <message>
+        <location filename="a.cpp" line="93"/>
+        <source>One string</source>
+        <translation>Ein Gesimsband</translation>
+    </message>
+    <message numerus="yes">
+        <location filename="a.cpp" line="456"/>
+        <source>%n things</source>
+        <translation>
+            <numerusform></numerusform>
+            <numerusform>%n Dinger</numerusform>
+        </translation>
+    </message>
+</context>
+</TS>
diff --git a/tests/auto/linguist/lconvert/tst_lconvert.cpp b/tests/auto/linguist/lconvert/tst_lconvert.cpp
index bf4ca95109d25ea500361dde96a4bc90b26d40ec..2ff8ea508a0d2e33790e6538982fe9131d898338 100644
--- a/tests/auto/linguist/lconvert/tst_lconvert.cpp
+++ b/tests/auto/linguist/lconvert/tst_lconvert.cpp
@@ -46,10 +46,8 @@ private slots:
     void converts();
     void roundtrips_data();
     void roundtrips();
-#if 0
     void chains_data();
     void chains();
-#endif
     void merge();
 
 private:
@@ -247,7 +245,6 @@ void tst_lconvert::converts()
 
 Q_DECLARE_METATYPE(QList<QStringList>);
 
-#if 0
 void tst_lconvert::chains_data()
 {
     QTest::addColumn<QString>("inFileName");
@@ -255,6 +252,9 @@ void tst_lconvert::chains_data()
     QTest::addColumn<QStringList>("stations");
     QTest::addColumn<QList<QStringList> >("args");
 
+    QTest::newRow("no-untranslated") << "untranslated.ts" << "untranslated.ts.out"
+                                     << QStringList({"ts", "ts"})
+                                     << QList<QStringList>({QStringList("-no-untranslated")});
 }
 
 void tst_lconvert::chains()
@@ -266,7 +266,6 @@ void tst_lconvert::chains()
 
     convertChain(inFileName, outFileName, stations, args);
 }
-#endif
 
 void tst_lconvert::roundtrips_data()
 {