Ein Unity-Spiel ins Englische übersetzen (externalisierter Text)
Eine Schritt-für-Schritt-Anleitung zum Übersetzen von Unity-Spielen ins Englische mit RuneTranslate — Auslesen von TextAssets, MonoBehaviour-Feldern und StreamingAssets, warum nur externalisierter Text unterstützt wird und wie der Identifier-Schutz verhindert, dass du das Spiel kaputtmachst.
Unity ist die Engine hinter einem wachsenden Anteil japanischer Indie-Spiele und Visual Novels — und die kniffligste der gängigen Engines beim Übersetzen, weil Unity kein einheitliches Textformat hat. Dialoge können in TextAsset-Blobs stecken, in MonoBehaviour-String-Feldern, in losen StreamingAssets-Skripten oder direkt in eine C#-DLL einkompiliert sein. Diese Anleitung führt durch das Übersetzen eines Unity-Spiels mit RuneTranslate und erklärt — mindestens genauso wichtig — die eine Regel, die Unity anders macht: nur externalisierter Text.
Zuerst der große Vorbehalt: nur externalisierter Text
RuneTranslate übersetzt Unity-Text, der in Daten liegt — Asset-Dateien, die die Engine zur Laufzeit lädt, einschließlich der String-Felder auf MonoBehaviour-Komponenten (Dialoge, Namen, Labels). Was es nicht übersetzt, ist Text, den ein Entwickler fest in den kompilierten C#-Code geschrieben hat — die Assembly-CSharp.dll bei Mono-Builds oder das IL2CPP-Binary. MonoBehaviour-Felder werden bei sowohl Mono- als auch IL2CPP-Builds gelesen: RuneTranslate holt ihr Typ-Layout aus den spieleigenen DLLs (Mono) oder rekonstruiert es aus den IL2CPP-Metadaten, wenn kein Managed/-Ordner vorhanden ist. In der Praxis: Spiele, die ihr Skript in Assets und Komponenten belassen, lassen sich gut übersetzen; Spiele, die jede Zeile in kompilierten Code backen, lassen sich nur teilweise übersetzen — und du weißt erst, was du hast, wenn du es öffnest, was der erste Schritt ist.
Was du brauchst
- RuneTranslate für Windows — kostenlos, jede Engine und jeder Anbieter freigeschaltet.
- Einen Unity-Spielordner — das Verzeichnis mit der Spiel-
.exeund einem<GameName>_Data/-Ordner (derglobalgamemanagers,resources.assets,data.unity3dundlevel*-Dateien enthält). - Eine Zielsprache — Englisch, Spanisch, Französisch, Deutsch, Portugiesisch, Russisch, Chinesisch, Italienisch, Türkisch, Vietnamesisch und 20+ weitere.
- Einen Übersetzungsanbieter. Das kostenlose Google Translate funktioniert sofort; DeepL hat eine kostenlose Stufe; OpenAI, Anthropic, ein lokales Modell und jede OpenAI-kompatible API laufen mit deinem eigenen Schlüssel.
Schritt 1: Den Spielordner öffnen
Starte RuneTranslate, klicke auf Neues Projekt und richte es auf das Unity-Spielverzeichnis. Die Engine-Erkennung sucht nach dem _Data/-Ordner und identifiziert das Projekt als Unity. Ein mitgelieferter UnityPy-Python-Sidecar (im Installer enthalten) öffnet die Asset-Dateien und listet die lesbaren Strings in einen projektspezifischen Arbeitsbereich unter %APPDATA%/RuneTranslate/unity-workspace/<projectId>/. Dein ursprünglicher Spielordner wird nie verändert. Unity ist eine Best-Effort-Engine — prüfe, ob der exportierte Build läuft, bevor du ihn weitergibst.
Schritt 2: Wie Strings extrahiert werden
RuneTranslate liest Text an jeder Stelle, an der Unity ihn externalisiert:
- TextAssets — JSON- / CSV- / Skript-Blobs, eingebettet in
.assetsund AssetBundles, aufgeteilt durch einen formatbewussten Extraktor. - MonoBehaviour-String-Felder — Anzeigetext auf Komponenten (Dialoge, Namen, Labels), bei sowohl Mono- als auch IL2CPP-Builds (die Typ-Info stammt aus den spieleigenen DLLs oder wird aus den IL2CPP-Metadaten rekonstruiert).
- StreamingAssets — lose Skriptdateien (
.json,.txt,.csv,.ks), direkt auf der Festplatte durchlaufen.
Unity ist auch die Stelle, an der Über-Übersetzung den größten Schaden anrichtet, deshalb liefert RuneTranslate dafür einen Schutz mit. Viele MonoBehaviour-Strings sind überhaupt kein Anzeigetext — es sind Steuerungs-Identifier und Ablauf-Operanden: Szenennamen, die ein LoadScene-Aufruf per String auflöst, Message-Routing-Schlüssel, Animator- / Sound-Clip-Namen, Live2D-Teilenamen und die Vergleichswerte innerhalb der Fungus-If- / SetVariable-Logik (z. B. ein Flag wie 村落出口). Übersetzt du die, geht das Spiel stillschweigend kaputt — das klassische Symptom ist ein endloser „Ladebildschirm“ ohne Fehlermeldung. RuneTranslate klassifiziert diese automatisch als ausgeschlossen (in Rot angezeigt, nur bei manueller Aktivierung), sodass der Editor echte Dialoge und Labels hervorhebt und die Mechanik in Ruhe lässt. Fungus-{$var}-Substitutionen und {color=...}- / TMP-<...>-Markup werden hinter Platzhaltern maskiert, damit sie die Übersetzung unversehrt überstehen.
Schritt 3: Übersetzen und überprüfen
Wähle einen Anbieter und starte. DeepL oder ein LLM lesen sich am besten für Dialoge; das kostenlose Google Translate deckt Menüs und Gegenstandsnamen ab. Lege zuerst ein Glossar für deine Besetzung und wiederkehrende Begriffe an — siehe Glossar 101. Jede Zeile landet im Editor neben ihrer Quelle; bearbeite sie direkt (speichert beim Verlassen des Felds oder mit Strg+Enter) und starte den optionalen KI-Refiner für ein Korrekturlesen im zweiten Durchgang. Die kostenlose Stufe von RuneTranslate ist ~3–4× langsamer gedrosselt als die bezahlte — bei gleicher Ausgabequalität.
Schritt 4: Einen spielbaren Build exportieren
Klicke auf Exportieren. RuneTranslate kopiert das Spiel und patcht dann die übersetzten Strings direkt zurück in die Asset-Dateien. Derselbe Ausschluss-Schutz läuft beim Zurückschreiben, sodass ein älteres Projekt beim erneuten Export nicht versehentlich einen übersetzten Szenennamen oder Ablauf-Operanden einschleusen kann. Das Ergebnis ist eine vollständige, lauffähige Kopie des Spiels am gewählten Ort — starte die .exe und es läuft in deiner Zielsprache.
Bekannte Einschränkungen
- Nur externalisierter Text: Strings, die fest in den kompilierten C#-Code geschrieben sind (
Assembly-CSharp.dllbei Mono oder das IL2CPP-Binary), werden nicht übersetzt. MonoBehaviour-Daten-Felder schon — bei sowohl Mono- als auch IL2CPP-Builds. - Das Lesen von IL2CPP-MonoBehaviour benötigt eine parsbare
global-metadata.dat; stark obfuskierte Metadaten lassen sich möglicherweise nicht rekonstruieren (Best-Effort). - Best-Effort: Bestätige, dass das exportierte Spiel startet und korrekt liest, bevor du es teilst.
- Bildtext (Logos, handgezeichnete UI, CG-Untertitel) wird nicht übersetzt — außerhalb des Rahmens maschineller Übersetzung.
Warum das einfacher ist als der alte Weg
Manuelles Unity-Übersetzen bedeutete, Assets mit UABE oder AssetStudio zu entpacken, zu suchen, welche TextAssets und MonoBehaviour-Felder echten Text enthielten, die Identifier-Strings, die das Spiel zum Absturz bringen, von Hand zu meiden und dann neu zu importieren, ohne die Asset-Tabelle zu beschädigen. RuneTranslate fasst Extrahieren, Klassifizieren (damit du keine Mechanik übersetzt), Übersetzen und In-Place-Patchen in wenige Klicks zusammen — mit geöffnetem Editor, damit du die Formulierung kontrollierst.
Sieh dir die Unity-Engine-Seite an für die vollständige Funktionsliste, lies den TyranoBuilder-Leitfaden für eine HTML-basierte Engine oder lade RuneTranslate herunter und probiere es an einem echten Spiel aus.
Bereit, RuneTranslate auszuprobieren?
Der Free-Tarif schaltet jede Engine + jeden Übersetzungsanbieter frei. Supporter ($3/Mon.) schaltet volle Geschwindigkeit frei.
Für Windows herunterladen