diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index 9175b43d4fe31dd5965ecb0970352f2eabc6eb09..6ed72f93b2cad6ce20ad0c31e7c8b65ad5f755b6 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -73,7 +73,8 @@ namespace CVS {
 
 static inline QString msgCannotFindTopLevel(const QString &f)
 {
-    return CVSPlugin::tr("Cannot find repository for '%1'").arg(f);
+    return CVSPlugin::tr("Cannot find repository for '%1'").
+            arg(QDir::toNativeSeparators(f));
 }
 
 static inline QString msgLogParsingFailed()
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 41152faf3b68b3771ae07845ebe897e640fb4ca9..2312e47a6baeb90ab58cec0e22b15eb9002af046 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -488,7 +488,8 @@ bool GitClient::synchronousAdd(const QString &workingDirectory,
     const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
     if (!rc) {
         const QString errorMessage = tr("Unable to add %n file(s) to %1: %2", 0, files.size()).
-                                     arg(workingDirectory, commandOutputFromLocal8Bit(errorText));
+                                     arg(QDir::toNativeSeparators(workingDirectory),
+                                     commandOutputFromLocal8Bit(errorText));
         outputWindow()->appendError(errorMessage);
     }
     return rc;
@@ -510,7 +511,7 @@ bool GitClient::synchronousDelete(const QString &workingDirectory,
     const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
     if (!rc) {
         const QString errorMessage = tr("Unable to remove %n file(s) from %1: %2", 0, files.size()).
-                                     arg(workingDirectory, commandOutputFromLocal8Bit(errorText));
+                                     arg(QDir::toNativeSeparators(workingDirectory), commandOutputFromLocal8Bit(errorText));
         outputWindow()->appendError(errorMessage);
     }
     return rc;
@@ -563,8 +564,9 @@ bool GitClient::synchronousReset(const QString &workingDirectory,
          && !output.contains(QLatin1String("Unstaged changes after reset")))) {
         const QString stdErr = commandOutputFromLocal8Bit(errorText);
         const QString msg = files.isEmpty() ?
-                            tr("Unable to reset %1: %2").arg(workingDirectory, stdErr) :
-                            tr("Unable to reset %n file(s) in %1: %2", 0, files.size()).arg(workingDirectory, stdErr);
+                            tr("Unable to reset %1: %2").arg(QDir::toNativeSeparators(workingDirectory), stdErr) :
+                            tr("Unable to reset %n file(s) in %1: %2", 0, files.size()).
+                            arg(QDir::toNativeSeparators(workingDirectory), stdErr);
         if (errorMessage) {
             *errorMessage = msg;
         } else {
@@ -727,7 +729,7 @@ bool GitClient::synchronousShortDescriptions(const QString &workingDirectory, co
 
 static inline QString msgCannotDetermineBranch(const QString &workingDirectory, const QString &why)
 {
-    return GitClient::tr("Unable to retrieve branch of %1: %2").arg(workingDirectory, why);
+    return GitClient::tr("Unable to retrieve branch of %1: %2").arg(QDir::toNativeSeparators(workingDirectory), why);
 }
 
 // Retrieve head revision/branch
@@ -749,7 +751,7 @@ bool GitClient::synchronousTopRevision(const QString &workingDirectory,
             arguments << QLatin1String("log") << QLatin1String(noColorOption)
                     <<  QLatin1String("--max-count=1") << QLatin1String("--pretty=format:%H");
             if (!fullySynchronousGit(workingDirectory, arguments, &outputTextData, &errorText)) {
-                errorMessage =  tr("Unable to retrieve top revision of %1: %2").arg(workingDirectory, commandOutputFromLocal8Bit(errorText));
+                errorMessage =  tr("Unable to retrieve top revision of %1: %2").arg(QDir::toNativeSeparators(workingDirectory), commandOutputFromLocal8Bit(errorText));
                 break;
             }
             *revision = commandOutputFromLocal8Bit(outputTextData);
@@ -899,7 +901,9 @@ bool GitClient::executeSynchronousStash(const QString &workingDirectory,
         arguments << QLatin1String("save") << message;
     const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
     if (!rc) {
-        const QString msg = tr("Unable stash in %1: %2").arg(workingDirectory, commandOutputFromLocal8Bit(errorText));
+        const QString msg = tr("Unable stash in %1: %2").
+                            arg(QDir::toNativeSeparators(workingDirectory),
+                                commandOutputFromLocal8Bit(errorText));
         if (errorMessage) {
             *errorMessage = msg;
         } else {
@@ -1691,9 +1695,12 @@ bool GitClient::synchronousStashRestore(const QString &workingDirectory,
     const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
     if (!rc) {
         const QString stdErr = commandOutputFromLocal8Bit(errorText);
+        const QString nativeWorkingDir = QDir::toNativeSeparators(workingDirectory);
         const QString msg = branch.isEmpty() ?
-                            tr("Unable to restore stash %1: %2").arg(workingDirectory, stdErr) :
-                            tr("Unable to restore stash %1 to branch %2: %3").arg(workingDirectory, branch, stdErr);
+                            tr("Unable to restore stash %1: %2").
+                            arg(nativeWorkingDir, stdErr) :
+                            tr("Unable to restore stash %1 to branch %2: %3").
+                            arg(nativeWorkingDir, branch, stdErr);
         if (errorMessage) {
             *errorMessage = msg;
         } else {
@@ -1723,9 +1730,12 @@ bool GitClient::synchronousStashRemove(const QString &workingDirectory,
     const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
     if (!rc) {
         const QString stdErr = commandOutputFromLocal8Bit(errorText);
+        const QString nativeWorkingDir = QDir::toNativeSeparators(workingDirectory);
         const QString msg = stash.isEmpty() ?
-                            tr("Unable to remove stashes of %1: %2").arg(workingDirectory, stdErr) :
-                            tr("Unable to remove stash %1 of %2: %3").arg(stash, workingDirectory, stdErr);
+                            tr("Unable to remove stashes of %1: %2").
+                            arg(nativeWorkingDir, stdErr) :
+                            tr("Unable to remove stash %1 of %2: %3").
+                            arg(stash, nativeWorkingDir, stdErr);
         if (errorMessage) {
             *errorMessage = msg;
         } else {
@@ -1764,7 +1774,9 @@ bool GitClient::synchronousStashList(const QString &workingDirectory,
     QByteArray errorText;
     const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
     if (!rc) {
-        const QString msg = tr("Unable retrieve stash list of %1: %2").arg(workingDirectory, commandOutputFromLocal8Bit(errorText));
+        const QString msg = tr("Unable retrieve stash list of %1: %2").
+                            arg(QDir::toNativeSeparators(workingDirectory),
+                                commandOutputFromLocal8Bit(errorText));
         if (errorMessage) {
             *errorMessage = msg;
         } else {
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index 9d4bd97c5d419b8e080c24cce4df4dd940a7e7e9..ccf88a3e2c67359c680aa2e71adac4c81dc239cf 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -187,7 +187,8 @@ static inline QString msgParentRevisionFailed(const QString &workingDirectory,
                                               const QString &revision,
                                               const QString &why)
 {
-    return MercurialClient::tr("Unable to find parent revisions of %1 in %2: %3").arg(revision, workingDirectory, why);
+    return MercurialClient::tr("Unable to find parent revisions of %1 in %2: %3").
+            arg(revision, QDir::toNativeSeparators(workingDirectory), why);
 }
 
 static inline QString msgParseParentsOutputFailed(const QString &output)
@@ -526,7 +527,8 @@ void MercurialClient::outgoing(const QString &repositoryRoot)
     args << QLatin1String("outgoing") << QLatin1String("-g") << QLatin1String("-p");
 
     const QString kind = QLatin1String(Constants::DIFFLOG);
-    const QString title = tr("Hg outgoing %1").arg(repositoryRoot);
+    const QString title = tr("Hg outgoing %1").
+                          arg(QDir::toNativeSeparators(repositoryRoot));
 
     VCSBase::VCSBaseEditor *editor = createVCSEditor(kind, title, repositoryRoot, true,
                                                      "outgoing", repositoryRoot);
diff --git a/src/plugins/mercurial/mercurialjobrunner.cpp b/src/plugins/mercurial/mercurialjobrunner.cpp
index 696b299787613441d8ce575111db27c45e5af585..a367037c993d05b259424a5eaaed2c3a23da8cc9 100644
--- a/src/plugins/mercurial/mercurialjobrunner.cpp
+++ b/src/plugins/mercurial/mercurialjobrunner.cpp
@@ -41,6 +41,7 @@
 #include <QtCore/QProcessEnvironment>
 #include <QtCore/QString>
 #include <QtCore/QDebug>
+#include <QtCore/QDir>
 
 using namespace Mercurial::Internal;
 using namespace Mercurial;
@@ -151,7 +152,8 @@ void MercurialJobRunner::run()
 
 QString MercurialJobRunner::msgStartFailed(const QString &binary, const QString &why)
 {
-    return tr("Unable to start mercurial process '%1': %2").arg(binary, why);
+    return tr("Unable to start mercurial process '%1': %2").
+            arg(QDir::toNativeSeparators(binary), why);
 }
 
 QString MercurialJobRunner::msgTimeout(int timeoutSeconds)
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index 12affb01f0c496812ea9be0317f26f223d2b36d9..3a0a4372e0b6c211afec6d9950f7baccc4e8e55c 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -602,7 +602,8 @@ void MercurialPlugin::showCommitWidget(const QList<QPair<QString, QString> > &st
         return;
     }
 
-    const QString msg = tr("Commit changes for \"%1\".").arg(m_submitRepository);
+    const QString msg = tr("Commit changes for \"%1\".").
+                        arg(QDir::toNativeSeparators(m_submitRepository));
     commitEditor->setDisplayName(msg);
 
     QString branch = m_client->branchQuerySync(m_submitRepository);
diff --git a/src/plugins/perforce/perforcechecker.cpp b/src/plugins/perforce/perforcechecker.cpp
index ea48d9db00fa875214ff5343163e556fea98c07e..377eefc176d42f47025b229eeacf4bcb7d657f00 100644
--- a/src/plugins/perforce/perforcechecker.cpp
+++ b/src/plugins/perforce/perforcechecker.cpp
@@ -35,6 +35,7 @@
 #include <QtCore/QRegExp>
 #include <QtCore/QTimer>
 #include <QtCore/QFileInfo>
+#include <QtCore/QDir>
 
 #include <QtGui/QApplication>
 #include <QtGui/QCursor>
@@ -108,7 +109,8 @@ void PerforceChecker::slotTimeOut()
         return;
     m_timedOut = true;
     Utils::SynchronousProcess::stopProcess(m_process);
-    emitFailed(tr("\"%1\" timed out after %2ms.").arg(m_binary).arg(m_timeOutMS));
+    emitFailed(tr("\"%1\" timed out after %2ms.").
+               arg(m_binary).arg(m_timeOutMS));
 }
 
 void PerforceChecker::slotError(QProcess::ProcessError error)
@@ -117,7 +119,8 @@ void PerforceChecker::slotError(QProcess::ProcessError error)
         return;
     switch (error) {
     case QProcess::FailedToStart:
-        emitFailed(tr("Unable to launch \"%1\": %2").arg(m_binary, m_process.errorString()));
+        emitFailed(tr("Unable to launch \"%1\": %2").
+                   arg(QDir::toNativeSeparators(m_binary), m_process.errorString()));
         break;
     case QProcess::Crashed: // Handled elsewhere
     case QProcess::Timedout:
@@ -136,12 +139,13 @@ void PerforceChecker::slotFinished(int exitCode, QProcess::ExitStatus exitStatus
         return;
     switch (exitStatus) {
     case QProcess::CrashExit:
-        emitFailed(tr("\"%1\" crashed.").arg(m_binary));
+        emitFailed(tr("\"%1\" crashed.").arg(QDir::toNativeSeparators(m_binary)));
         break;
     case QProcess::NormalExit:
         if (exitCode) {
             const QString stdErr = QString::fromLocal8Bit(m_process.readAllStandardError());
-            emitFailed(tr("\"%1\" terminated with exit code %2: %3").arg(m_binary).arg(exitCode).arg(stdErr));
+            emitFailed(tr("\"%1\" terminated with exit code %2: %3").
+                       arg(QDir::toNativeSeparators(m_binary)).arg(exitCode).arg(stdErr));
         } else {
             parseOutput(QString::fromLocal8Bit(m_process.readAllStandardOutput()));
         }
@@ -178,7 +182,8 @@ void PerforceChecker::parseOutput(const QString &response)
     if (fi.exists()) {
         emitSucceeded(repositoryRoot);
     } else {
-        emitFailed(tr("The repository \"%1\" does not exist.").arg(repositoryRoot));
+        emitFailed(tr("The repository \"%1\" does not exist.").
+                   arg(QDir::toNativeSeparators(repositoryRoot)));
     }
 }
 
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index 087ba8c962ef5453874fba62d262bf29731f308c..ea8e0cd64c03843ef2a4c9ab0d5cf43f35df1d2e 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -1089,7 +1089,9 @@ PerforceResponse PerforcePlugin::fullySynchronousProcess(const QString &workingD
         if (process.write(stdInput) == -1) {
             Utils::SynchronousProcess::stopProcess(process);
             response.error = true;
-            response.message = tr("Unable to write input data to process %1: %2").arg(m_settings.p4Command(), process.errorString());
+            response.message = tr("Unable to write input data to process %1: %2").
+                               arg(QDir::toNativeSeparators(m_settings.p4Command()),
+                                   process.errorString());
             return response;
         }
         process.closeWriteChannel();
@@ -1403,7 +1405,8 @@ static inline QString msgWhereFailed(const QString & file, const QString &why)
 {
     //: Failed to run p4 "where" to resolve a Perforce file name to a local
     //: file system name.
-    return PerforcePlugin::tr("Error running \"where\" on %1: %2").arg(file, why);
+    return PerforcePlugin::tr("Error running \"where\" on %1: %2").
+            arg(QDir::toNativeSeparators(file), why);
 }
 
 // Map a perforce name "//xx" to its real name in the file system
@@ -1458,7 +1461,9 @@ PerforceVersionControl *PerforcePlugin::perforceVersionControl() const
 void PerforcePlugin::slotTopLevelFound(const QString &t)
 {
     m_settings.setTopLevel(t);
-    VCSBase::VCSBaseOutputWindow::instance()->appendSilently(tr("Perforce repository: %1").arg(t));
+    const QString msg = tr("Perforce repository: %1").
+                        arg(QDir::toNativeSeparators(t));
+    VCSBase::VCSBaseOutputWindow::instance()->appendSilently(msg);
     if (Perforce::Constants::debug)
         qDebug() << "P4: " << t;
 }
diff --git a/src/plugins/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp
index 7f037488f1778cc61ba9e783d33b208e3a08a59c..5bdfe0f54782080c145482f720652051e970f1c4 100644
--- a/src/plugins/perforce/settingspage.cpp
+++ b/src/plugins/perforce/settingspage.cpp
@@ -71,7 +71,7 @@ void SettingsPageWidget::slotTest()
 
 void SettingsPageWidget::testSucceeded(const QString &repo)
 {
-    setStatusText(tr("Test succeeded (%1).").arg(repo));
+    setStatusText(tr("Test succeeded (%1).").arg(QDir::toNativeSeparators(repo)));
 }
 
 Settings SettingsPageWidget::settings() const
diff --git a/src/plugins/vcsbase/basecheckoutwizard.cpp b/src/plugins/vcsbase/basecheckoutwizard.cpp
index 8ca74f19c324964f87011a13a822a009ccf3ed5a..6422c15af23b5754c78d7fa8b60f9175a1e15122 100644
--- a/src/plugins/vcsbase/basecheckoutwizard.cpp
+++ b/src/plugins/vcsbase/basecheckoutwizard.cpp
@@ -159,7 +159,8 @@ QString BaseCheckoutWizard::openProject(const QString &path, QString *errorMessa
     // Search the directory for project files
     const QDir dir(path);
     if (!dir.exists()) {
-        *errorMessage = tr("'%1' does not exist.").arg(path); // Should not happen
+        *errorMessage = tr("'%1' does not exist.").
+                        arg(QDir::toNativeSeparators(path)); // Should not happen
         return QString();
     }
     QFileInfoList projectFiles = findProjectFiles(dir, errorMessage);
@@ -168,7 +169,8 @@ QString BaseCheckoutWizard::openProject(const QString &path, QString *errorMessa
     // Open. Do not use a busy cursor here as additional wizards might pop up
     const QString projectFile = projectFiles.front().absoluteFilePath();
     if (!pe->openProject(projectFile)) {
-        *errorMessage = tr("Unable to open the project '%1'.").arg(projectFile);
+        *errorMessage = tr("Unable to open the project '%1'.").
+                        arg(QDir::toNativeSeparators(projectFile));
         return QString();
     }
     return projectFile;
diff --git a/src/plugins/vcsbase/checkoutjobs.cpp b/src/plugins/vcsbase/checkoutjobs.cpp
index 14bfdd15209fd9b984cc835c603b519d2bb23b88..293f519be58f6876684384f07627a014a389f14b 100644
--- a/src/plugins/vcsbase/checkoutjobs.cpp
+++ b/src/plugins/vcsbase/checkoutjobs.cpp
@@ -32,6 +32,7 @@
 #include <vcsbaseplugin.h>
 
 #include <QtCore/QDebug>
+#include <QtCore/QDir>
 #include <utils/synchronousprocess.h>
 
 enum { debug = 0 };
@@ -111,7 +112,8 @@ void ProcessCheckoutJob::slotError(QProcess::ProcessError error)
 {
     switch (error) {
     case QProcess::FailedToStart:
-        emit failed(tr("Unable to start %1: %2").arg(d->binary, d->process->errorString()));
+        emit failed(tr("Unable to start %1: %2").
+                    arg(QDir::toNativeSeparators(d->binary), d->process->errorString()));
         break;
     default:
         emit failed(d->process->errorString());
diff --git a/src/plugins/vcsbase/cleandialog.cpp b/src/plugins/vcsbase/cleandialog.cpp
index cbf04a4869f08fa4a29130be81f2e7fa944e9763..b068607a5385ff10e129f758d09cd06b5341fd08 100644
--- a/src/plugins/vcsbase/cleandialog.cpp
+++ b/src/plugins/vcsbase/cleandialog.cpp
@@ -65,13 +65,15 @@ static void removeFileRecursion(const QFileInfo &f, QString *errorMessage)
             removeFileRecursion(fi, errorMessage);
         QDir parent = f.absoluteDir();
         if (!parent.rmdir(f.fileName()))
-            errorMessage->append(VCSBase::CleanDialog::tr("The directory %1 could not be deleted.").arg(f.absoluteFilePath()));
+            errorMessage->append(VCSBase::CleanDialog::tr("The directory %1 could not be deleted.").
+                                 arg(QDir::toNativeSeparators(f.absoluteFilePath())));
         return;
     }
     if (!QFile::remove(f.absoluteFilePath())) {
         if (!errorMessage->isEmpty())
             errorMessage->append(QLatin1Char('\n'));
-        errorMessage->append(VCSBase::CleanDialog::tr("The file %1 could not be deleted.").arg(f.absoluteFilePath()));
+        errorMessage->append(VCSBase::CleanDialog::tr("The file %1 could not be deleted.").
+                             arg(QDir::toNativeSeparators(f.absoluteFilePath())));
     }
 }
 
@@ -107,7 +109,8 @@ void CleanFilesTask::run()
         removeFileRecursion(QFileInfo(name), &m_errorMessage);
     if (!m_errorMessage.isEmpty()) {
         // Format and emit error.
-        const QString msg = CleanDialog::tr("There were errors when cleaning the repository %1:").arg(m_repository);
+        const QString msg = CleanDialog::tr("There were errors when cleaning the repository %1:").
+                            arg(QDir::toNativeSeparators(m_repository));
         m_errorMessage.insert(0, QLatin1Char('\n'));
         m_errorMessage.insert(0, msg);
         emit error(m_errorMessage);
@@ -157,7 +160,8 @@ CleanDialog::~CleanDialog()
 void CleanDialog::setFileList(const QString &workingDirectory, const QStringList &l)
 {
     d->m_workingDirectory = workingDirectory;
-    d->ui.groupBox->setTitle(tr("Repository: %1").arg(workingDirectory));
+    d->ui.groupBox->setTitle(tr("Repository: %1").
+                             arg(QDir::toNativeSeparators(workingDirectory)));
     if (const int oldRowCount = d->m_filesModel->rowCount())
         d->m_filesModel->removeRows(0, oldRowCount);
 
@@ -235,7 +239,8 @@ bool CleanDialog::promptToDelete()
             Qt::QueuedConnection);
 
     QFuture<void> task = QtConcurrent::run(cleanTask, &CleanFilesTask::run);
-    const QString taskName = tr("Cleaning %1").arg(d->m_workingDirectory);
+    const QString taskName = tr("Cleaning %1").
+                             arg(QDir::toNativeSeparators(d->m_workingDirectory));
     Core::ICore::instance()->progressManager()->addTask(task, taskName,
                                                         QLatin1String("VCSBase.cleanRepository"));
     return true;
diff --git a/src/plugins/vcsbase/nicknamedialog.cpp b/src/plugins/vcsbase/nicknamedialog.cpp
index 3d3d33266b657cac3505dd8a95704868b98f75d0..84251e639b603f8be2be3a0bbb890a34d5d9d03f 100644
--- a/src/plugins/vcsbase/nicknamedialog.cpp
+++ b/src/plugins/vcsbase/nicknamedialog.cpp
@@ -32,6 +32,7 @@
 
 #include <QtCore/QDebug>
 #include <QtCore/QFile>
+#include <QtCore/QDir>
 #include <QtGui/QPushButton>
 #include <QtGui/QStandardItemModel>
 #include <QtGui/QSortFilterProxyModel>
@@ -230,7 +231,8 @@ bool NickNameDialog::populateModelFromMailCapFile(const QString &fileName,
         return true;
     QFile file(fileName);
     if (!file.open(QIODevice::ReadOnly|QIODevice::Text)) {
-         *errorMessage = tr("Cannot open '%1': %2").arg(fileName, file.errorString());
+         *errorMessage = tr("Cannot open '%1': %2").
+                         arg(QDir::toNativeSeparators(fileName), file.errorString());
          return false;
     }
     // Split into lines and read
@@ -241,7 +243,9 @@ bool NickNameDialog::populateModelFromMailCapFile(const QString &fileName,
         if (entry.parse(lines.at(i))) {
             model->appendRow(entry.toModelRow());
         } else {
-            qWarning("%s: Invalid mail cap entry at line %d: '%s'\n", qPrintable(fileName), i + 1, qPrintable(lines.at(i)));
+            qWarning("%s: Invalid mail cap entry at line %d: '%s'\n",
+                     qPrintable(QDir::toNativeSeparators(fileName)),
+                     i + 1, qPrintable(lines.at(i)));
         }
     }
     model->sort(0);
diff --git a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp
index 6c8d10b9aa92ec65741a169c4012bbca540791d1..5045ddca1f1e89eafe0629d100b6416e395ae682 100644
--- a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp
+++ b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp
@@ -156,7 +156,8 @@ void OutputWindowPlainTextEdit::contextMenuEvent(QContextMenuEvent *event)
             fi = QFileInfo(repository + QLatin1Char('/') + token);
         if (fi.isFile())  {
             menu->addSeparator();
-            openAction = menu->addAction(VCSBaseOutputWindow::tr("Open \"%1\"").arg(fi.fileName()));
+            openAction = menu->addAction(VCSBaseOutputWindow::tr("Open \"%1\"").
+                                         arg(QDir::toNativeSeparators(fi.fileName())));
             openAction->setData(fi.absoluteFilePath());
         }
     }
@@ -397,10 +398,11 @@ QString VCSBaseOutputWindow::msgExecutionLogEntry(const QString &workingDir,
                                                   const QStringList &arguments)
 {
     const QString args = formatArguments(arguments);
+    const QString nativeExecutable = QDir::toNativeSeparators(executable);
     if (workingDir.isEmpty())
-        return tr("Executing: %1 %2\n").arg(executable, args);
+        return tr("Executing: %1 %2\n").arg(nativeExecutable, args);
     return tr("Executing in %1: %2 %3\n").
-            arg(QDir::toNativeSeparators(workingDir), executable, args);
+            arg(QDir::toNativeSeparators(workingDir), nativeExecutable, args);
 }
 
 void VCSBaseOutputWindow::appendCommand(const QString &text)
diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp
index ab5e3fefd1c795e8011e8ea9d6ecc78865231f45..57ab5857a2a6142023d5f86db535715cc1747408 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.cpp
+++ b/src/plugins/vcsbase/vcsbaseplugin.cpp
@@ -542,7 +542,10 @@ void VCSBasePlugin::promptToDeleteCurrentFile()
     QTC_ASSERT(state.hasFile(), return)
     const bool rc = Core::ICore::instance()->vcsManager()->promptToDelete(versionControl(), state.currentFile());
     if (!rc)
-        QMessageBox::warning(0, tr("Version Control"), tr("The file '%1' could not be deleted.").arg(state.currentFile()), QMessageBox::Ok);
+        QMessageBox::warning(0, tr("Version Control"),
+                             tr("The file '%1' could not be deleted.").
+                             arg(QDir::toNativeSeparators(state.currentFile())),
+                             QMessageBox::Ok);
 }
 
 static inline bool ask(QWidget *parent, const QString &title, const QString &question, bool defaultValue = true)
@@ -576,12 +579,15 @@ void VCSBasePlugin::createRepository()
     } while (true);
     // Create
     const bool rc = d->m_versionControl->vcsCreateRepository(directory);
+    const QString nativeDir = QDir::toNativeSeparators(directory);
     if (rc) {
         QMessageBox::information(mw, tr("Repository created"),
-                                 tr("A version control repository has been created in %1.").arg(directory));
+                                 tr("A version control repository has been created in %1.").
+                                 arg(nativeDir));
     } else {
         QMessageBox::warning(mw, tr("Repository creation failed"),
-                                 tr("A version control repository could not be created in %1.").arg(directory));
+                                 tr("A version control repository could not be created in %1.").
+                                 arg(nativeDir));
     }
 }
 
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index b468a67d50d3c3e0b6865457557c8f636677806a..ca20460aa3b4b5814b214f27068ef8d63f082b99 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -549,9 +549,11 @@ bool VCSBaseSubmitEditor::checkSubmitMessage(QString *errorMessage) const
 
 static inline QString msgCheckScript(const QString &workingDir, const QString &cmd)
 {
+    const QString nativeCmd = QDir::toNativeSeparators(cmd);
     return workingDir.isEmpty() ?
-           VCSBaseSubmitEditor::tr("Executing %1").arg(cmd) :
-           VCSBaseSubmitEditor::tr("Executing [%1] %2").arg(workingDir, cmd);
+           VCSBaseSubmitEditor::tr("Executing %1").arg(nativeCmd) :
+           VCSBaseSubmitEditor::tr("Executing [%1] %2").
+           arg(QDir::toNativeSeparators(workingDir), nativeCmd);
 }
 
 bool VCSBaseSubmitEditor::runSubmitMessageCheckScript(const QString &checkScript, QString *errorMessage) const
@@ -564,7 +566,9 @@ bool VCSBaseSubmitEditor::runSubmitMessageCheckScript(const QString &checkScript
     QTemporaryFile messageFile(tempFilePattern);
     messageFile.setAutoRemove(true);
     if (!messageFile.open()) {
-        *errorMessage = tr("Unable to open '%1': %2").arg(messageFile.fileName(), messageFile.errorString());
+        *errorMessage = tr("Unable to open '%1': %2").
+                        arg(QDir::toNativeSeparators(messageFile.fileName()),
+                            messageFile.errorString());
         return false;
     }
     const QString messageFileName = messageFile.fileName();
@@ -586,11 +590,13 @@ bool VCSBaseSubmitEditor::runSubmitMessageCheckScript(const QString &checkScript
     QByteArray stdErrData;
     if (!Utils::SynchronousProcess::readDataFromProcess(checkProcess, 30000, &stdOutData, &stdErrData, false)) {
         Utils::SynchronousProcess::stopProcess(checkProcess);
-        *errorMessage = tr("The check script '%1' timed out.").arg(checkScript);
+        *errorMessage = tr("The check script '%1' timed out.").
+                        arg(QDir::toNativeSeparators(checkScript));
         return false;
     }
     if (checkProcess.exitStatus() != QProcess::NormalExit) {
-        *errorMessage = tr("The check script '%1' crashed").arg(checkScript);
+        *errorMessage = tr("The check script '%1' crashed").
+                        arg(QDir::toNativeSeparators(checkScript));
         return false;
     }
     if (!stdOutData.isEmpty())
@@ -600,7 +606,8 @@ bool VCSBaseSubmitEditor::runSubmitMessageCheckScript(const QString &checkScript
         outputWindow->appendSilently(stdErr);
     const int exitCode = checkProcess.exitCode();
     if (exitCode != 0) {
-        const QString exMessage = tr("The check script returned exit code %1.").arg(exitCode);
+        const QString exMessage = tr("The check script returned exit code %1.").
+                                  arg(exitCode);
         outputWindow->appendError(exMessage);
         *errorMessage = stdErr;
         if (errorMessage->isEmpty())