diff --git a/src/qml/qml/qqmlcompiler.cpp b/src/qml/qml/qqmlcompiler.cpp
index cdbdb1e0598c055f3b6668649ce14010981a6eb9..0b222280343f3403eadde9c95d305018ee7219a5 100644
--- a/src/qml/qml/qqmlcompiler.cpp
+++ b/src/qml/qml/qqmlcompiler.cpp
@@ -3524,6 +3524,7 @@ void QQmlCompiler::genBindingAssignment(QQmlScript::Value *binding,
     Q_ASSERT(binding->bindingReference);
 
     const BindingReference &ref = *binding->bindingReference;
+#ifndef QT_NO_TRANSLATION
     if (ref.dataType == BindingReference::TrId) {
         const TrBindingReference &tr = static_cast<const TrBindingReference &>(ref);
 
@@ -3542,7 +3543,9 @@ void QQmlCompiler::genBindingAssignment(QQmlScript::Value *binding,
         store.comment = output->indexForByteArray(tr.comment.toUtf8());
         store.n = tr.n;
         output->addInstruction(store);
-    } else if (ref.dataType == BindingReference::V4) {
+    } else
+#endif
+    if (ref.dataType == BindingReference::V4) {
         const JSBindingReference &js = static_cast<const JSBindingReference &>(ref);
 
         Instruction::StoreV4Binding store;
diff --git a/src/qml/qml/qqmlinstruction.cpp b/src/qml/qml/qqmlinstruction.cpp
index 50ebbaacda5670031da2247e121c1a63c84e70de..96d12cfc52874598c5dba368711ee8eac61ceb1a 100644
--- a/src/qml/qml/qqmlinstruction.cpp
+++ b/src/qml/qml/qqmlinstruction.cpp
@@ -117,12 +117,14 @@ void QQmlCompiledData::dump(QQmlInstruction *instr, int idx)
     case QQmlInstruction::StoreStringQList:
         qWarning().nospace() << idx << "\t\t" << "STORE_STRING_QLIST\t\t" << instr->storeString.propertyIndex << "\t" << instr->storeString.value << "\t\t" << primitives.at(instr->storeString.value);
         break;
+#ifndef QT_NO_TRANSLATION
     case QQmlInstruction::StoreTrString:
         qWarning().nospace() << idx << "\t\t" << "STORE_TR_STRING\t" << instr->storeTrString.propertyIndex << "\t" << instr->storeTrString.context << "\t" << instr->storeTrString.text << "\t" << instr->storeTrString.comment << "\t" << instr->storeTrString.n;
         break;
     case QQmlInstruction::StoreTrIdString:
         qWarning().nospace() << idx << "\t\t" << "STORE_TRID_STRING\t" << instr->storeTrIdString.propertyIndex << "\t" << instr->storeTrIdString.text << "\t" << instr->storeTrIdString.n;
         break;
+#endif
     case QQmlInstruction::StoreByteArray:
         qWarning().nospace() << idx << "\t\t" << "STORE_BYTEARRAY" << instr->storeByteArray.propertyIndex << "\t" << instr->storeByteArray.value << "\t\t" << datas.at(instr->storeByteArray.value);
         break;
diff --git a/src/qml/qml/qqmlinstruction_p.h b/src/qml/qml/qqmlinstruction_p.h
index 6c1e4ab298a991240b2d12a344675f262987ed33..62ed0d53d5f0391b652d61b953c3b255ddd28dea 100644
--- a/src/qml/qml/qqmlinstruction_p.h
+++ b/src/qml/qml/qqmlinstruction_p.h
@@ -85,8 +85,8 @@ QT_BEGIN_NAMESPACE
     F(StoreJSValueBool, storeBool) \
     F(StoreStringList, storeString) \
     F(StoreStringQList, storeString) \
-    F(StoreTrString, storeTrString) \
-    F(StoreTrIdString, storeTrIdString) \
+    F_TRANSLATION(F, StoreTrString, storeTrString) \
+    F_TRANSLATION(F, StoreTrIdString, storeTrIdString) \
     F(StoreByteArray, storeByteArray) \
     F(StoreUrl, storeUrl) \
     F(StoreUrlQList, storeUrl) \
@@ -136,6 +136,12 @@ QT_BEGIN_NAMESPACE
     F(FetchValueType, fetchValue) \
     F(PopValueType, fetchValue) 
 
+#ifndef QT_NO_TRANSLATION
+#define F_TRANSLATION(F, I, FMT) F(I, FMT)
+#else
+#define F_TRANSLATION(F, I, FMT)
+#endif
+
 #if defined(Q_CC_GNU) && (!defined(Q_CC_INTEL) || __INTEL_COMPILER >= 1200)
 #  define QML_THREADED_VME_INTERPRETER
 #endif
diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp
index 3ad442fb3625703f63f56472f52e2ae43b890c75..da918c3c710312b86b84703fe38279bde530ad62 100644
--- a/src/qml/qml/qqmlvme.cpp
+++ b/src/qml/qml/qqmlvme.cpp
@@ -396,12 +396,14 @@ QObject *QQmlVME::run(QList<QQmlError> *errors,
         QML_STORE_POINTER(StoreString, &PRIMITIVES.at(instr.value));
         QML_STORE_POINTER(StoreByteArray, &DATAS.at(instr.value));
         QML_STORE_POINTER(StoreUrl, &URLS.at(instr.value));
+#ifndef QT_NO_TRANSLATION
         QML_STORE_VALUE(StoreTrString, QString,
                         QCoreApplication::translate(DATAS.at(instr.context).constData(),
                                                     DATAS.at(instr.text).constData(),
                                                     DATAS.at(instr.comment).constData(),
                                                     instr.n));
         QML_STORE_VALUE(StoreTrIdString, QString, qtTrId(DATAS.at(instr.text).constData(), instr.n));
+#endif
 
         // Store a literal value in a QList
         QML_STORE_LIST(StoreStringList, QStringList, PRIMITIVES.at(instr.value));
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
index c4352de9e99c311f12baf6dab3981f8751de1a7e..8e8e32072456a9a4fa958bdf72ae9ac9d77f0884 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
@@ -1328,6 +1328,7 @@ v8::Handle<v8::Value> createComponent(const v8::Arguments &args)
     return v8engine->newQObject(c);
 }
 
+#ifndef QT_NO_TRANSLATION
 /*!
     \qmlmethod string qsTranslate(string context, string sourceText, string disambiguation, int n)
 
@@ -1556,7 +1557,7 @@ v8::Handle<v8::Value> qsTrIdNoOp(const v8::Arguments &args)
         return v8::Undefined();
     return args[0];
 }
-
+#endif // QT_NO_TRANSLATION
 
 /*!
     \qmlmethod Qt::locale(name)
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h
index 08e7d4fd7562e4bfbcd112481994290e9d54397f..de171bb9011c5248dcbf45aecc7a18f091feb0f6 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h
@@ -100,12 +100,14 @@ v8::Handle<v8::Value> quit(const v8::Arguments &args);
 v8::Handle<v8::Value> resolvedUrl(const v8::Arguments &args);
 v8::Handle<v8::Value> createQmlObject(const v8::Arguments &args);
 v8::Handle<v8::Value> createComponent(const v8::Arguments &args);
+#ifndef QT_NO_TRANSLATION
 v8::Handle<v8::Value> qsTranslate(const v8::Arguments &args);
 v8::Handle<v8::Value> qsTranslateNoOp(const v8::Arguments &args);
 v8::Handle<v8::Value> qsTr(const v8::Arguments &args);
 v8::Handle<v8::Value> qsTrNoOp(const v8::Arguments &args);
 v8::Handle<v8::Value> qsTrId(const v8::Arguments &args);
 v8::Handle<v8::Value> qsTrIdNoOp(const v8::Arguments &args);
+#endif
 v8::Handle<v8::Value> stringArg(const v8::Arguments &args);
 v8::Handle<v8::Value> locale(const v8::Arguments &args);
 v8::Handle<v8::Value> binding(const v8::Arguments &args);
diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp
index 19aea297d3645d5c7b979fb5d21f7a778978ce9e..030cfda484d46d2de12098bc86099a5f0de34dcf 100644
--- a/src/qml/qml/v8/qv8engine.cpp
+++ b/src/qml/qml/v8/qv8engine.cpp
@@ -640,12 +640,14 @@ void QV8Engine::initializeGlobal(v8::Handle<v8::Object> global)
         qt->Set(v8::String::New("createComponent"), V8FUNCTION(createComponent, this));
     }
 
+#ifndef QT_NO_TRANSLATION
     global->Set(v8::String::New("qsTranslate"), V8FUNCTION(qsTranslate, this));
     global->Set(v8::String::New("QT_TRANSLATE_NOOP"), V8FUNCTION(qsTranslateNoOp, this));
     global->Set(v8::String::New("qsTr"), V8FUNCTION(qsTr, this));
     global->Set(v8::String::New("QT_TR_NOOP"), V8FUNCTION(qsTrNoOp, this));
     global->Set(v8::String::New("qsTrId"), V8FUNCTION(qsTrId, this));
     global->Set(v8::String::New("QT_TRID_NOOP"), V8FUNCTION(qsTrIdNoOp, this));
+#endif
 
     global->Set(v8::String::New("print"), consoleLogFn);
     global->Set(v8::String::New("console"), console);
diff --git a/src/qmltest/quicktest.cpp b/src/qmltest/quicktest.cpp
index 614dde3f6c91eb0ef103f9cc794c0bc86f227fb1..6a96395794fd013cdf45a045cd594d5fb412afd1 100644
--- a/src/qmltest/quicktest.cpp
+++ b/src/qmltest/quicktest.cpp
@@ -212,6 +212,7 @@ int quick_test_main(int argc, char **argv, const char *name, const char *sourceD
 
     QuickTestResult::parseArgs(argc, argv);
 
+#ifndef QT_NO_TRANSLATION
     QTranslator translator;
     if (!translationFile.isEmpty()) {
         if (translator.load(translationFile)) {
@@ -220,6 +221,7 @@ int quick_test_main(int argc, char **argv, const char *name, const char *sourceD
             qWarning("Could not load the translation file '%s'.", qPrintable(translationFile));
         }
     }
+#endif
 
     // Determine where to look for the test data.
     if (testPath.isEmpty() && sourceDir) {
diff --git a/tools/qmlscene/main.cpp b/tools/qmlscene/main.cpp
index cee09e08a5e1ad2daff669edea60626a8a68e054..32bf32edd89a265437cdd93b3e53563bfd168d3d 100644
--- a/tools/qmlscene/main.cpp
+++ b/tools/qmlscene/main.cpp
@@ -305,11 +305,13 @@ static void displayFileDialog(Options *options)
 #endif
 }
 
+#ifndef QT_NO_TRANSLATION
 static void loadTranslationFile(QTranslator &translator, const QString& directory)
 {
     translator.load(QLatin1String("qml_" )+QLocale::system().name(), directory + QLatin1String("/i18n"));
     QCoreApplication::installTranslator(&translator);
 }
+#endif
 
 static void loadDummyDataFiles(QQmlEngine &engine, const QString& directory)
 {
@@ -412,6 +414,7 @@ int main(int argc, char ** argv)
     app.setOrganizationName("Qt Project");
     app.setOrganizationDomain("qt-project.org");
 
+#ifndef QT_NO_TRANSLATION
     QTranslator translator;
     QTranslator qtTranslator;
     QString sysLocale = QLocale::system().name();
@@ -432,6 +435,7 @@ int main(int argc, char ** argv)
             qWarning() << "Could not load the translation file" << options.translationFile;
         }
     }
+#endif
 
     QUnifiedTimer::instance()->setSlowModeEnabled(options.slowAnimations);
 
@@ -446,7 +450,9 @@ int main(int argc, char ** argv)
 
     if (!options.file.isEmpty()) {
         if (!options.versionDetection || checkVersion(options.file)) {
+#ifndef QT_NO_TRANSLATION
             QTranslator translator;
+#endif
 
             // TODO: as soon as the engine construction completes, the debug service is
             // listening for connections.  But actually we aren't ready to debug anything.
@@ -458,7 +464,9 @@ int main(int argc, char ** argv)
                 engine.addNamedBundle(bundles.at(i).first, bundles.at(i).second);
             if (options.file.isLocalFile()) {
                 QFileInfo fi(options.file.toLocalFile());
+#ifndef QT_NO_TRANSLATION
                 loadTranslationFile(translator, fi.path());
+#endif
                 loadDummyDataFiles(engine, fi.path());
             }
             QObject::connect(&engine, SIGNAL(quit()), QCoreApplication::instance(), SLOT(quit()));