Eigentlich ist es deine Aufgabe ein Minimalbeispiel des Problems zu erstellen …
\documentclass{article}
\def\englishname{test-english}
\makeatletter\@onelevel@sanitize\englishname\makeatother
\edef\cmdname{\jobname}
\makeatletter\@onelevel@sanitize\cmdname\makeatother
\ifx\cmdname\englishname
\typeout{\jobname\space = \englishname}
\usepackage[main=english,ngerman]{babel}
\else
\typeout{\jobname\space != \englishname}
\usepackage{shellesc}
\ShellEscape{pdflatex -jobname=\englishname\space \jobname}
\usepackage[main=ngerman,english]{babel}
\fi
\usepackage{blindtext}
\begin{document}
\tableofcontents
\blinddocument
\end{document}
Angenommen, diese Datei heißt test.tex. Dann werden beim Aufruf »pdflatex -shell-escape test.tex« zwei Dateien test.pdf und test-english.pdf erzeugt, weil bei jeden Aufruf eben auch ein Aufruf »pdflatex -jobname=test-english test« erfolgt. Der \@onelevel@sanitize-Aufruf ist notwendig, weil die catcodes von \jobname und einem normal per \def definierten String sonst eventuell nicht übereinstimmen, so dass »test-english« und »\jobname« zwar eventuell dieselben Zeichen aber nicht dieselben Token sind und dann \ifx fehlschlagen würde.
Natürlich kann man auch die Unterscheidung statt über \jobname auch über ein Markermakro machen. Man kann auch wirklich zwei Dateien erzeugen und dann zwei \ShellEscapeAufrufe machen. Es ist extrem vieles möglich. Allerdings hat man bei diesem Vorgehen eben auch das Problem, dass Fehler in der Datei dann in zwei verschiedenen Log-Dateien stehen. Im Beispiel wird auch ein interaktiver pdflatex-Aufruf gestartet. Da muss man also ggf. neben Option -jobname auch noch Option -interaction mit passendem Wert versehen.
Das ist alles etwas für Leute, die auch Manual-Pages lesen können. Rainer User und überhaupt jedem, der den oben gezeigten Code auch mit der Anleitung seiner TeX-Distribution und der verwendeten Pakete nicht versteht, würde ich hingegen zwei Dokumente empfehlen, denn tatsächlich hat man ja ohnehin zwei Dokumente, nur eben in einem verwurstelt.