Unity Game Localization: Die besten Wege, Ihre String Tables zu übersetzen

Unity Game Localization: Die besten Wege, Ihre String Tables zu übersetzen

7. September 2026

Unity bietet Ihnen drei Möglichkeiten, Ihre String Tables zu exportieren, und Ihre Wahl entscheidet über die Form des gesamten Projekts. Nicht über die Qualität, nicht über die Kosten: sondern über die Form. Ein Weg liefert Ihnen eine einzelne Datei mit einer Spalte pro Sprache. Ein anderer liefert Ihnen eine Datei pro Sprache. Wenn Sie den für Ihren Workflow falschen Weg wählen, wird aus einem Zwei-Stunden-Job ein zweiwöchiger Prozess.

Dies ist ein Leitfaden zu allen drei Optionen, dazu, was jeder Export tatsächlich enthält und wie Sie die Übersetzung durchführen, ohne eine einzige Zeile manuell bearbeiten zu müssen.

Die drei Wege aus einer String Table Collection

Das Localization-Package von Unity exportiert String Table Collections als CSV, XLIFF und Google Sheets. Das ist das gesamte Menü, und da alle drei auf Dateiformaten basieren, die AI Glot nativ liest, ist bei keinem von ihnen ein Konvertierungsschritt erforderlich.

Sie sind jedoch nicht austauschbar, und dieser Teil ist zwei Minuten Ihrer Zeit wert:

Unity exportiert String Tables auf zwei Arten mit entgegengesetzten Strukturen: entweder eine Datei mit einer Spalte pro Sprache oder eine separate Datei pro Sprache.

CSV hält Ihre Sprachen zusammen. Eine Tabelle kann so viele Spalten enthalten, wie Sie wünschen. So enthält eine einzige Datei Englisch, Französisch, Japanisch und alles andere gleichzeitig, und ein einziger Übersetzungsauftrag kann jede leere Spalte in einem Durchgang füllen.

XLIFF trennt sie auf. Eine XLIFF-Datei koppelt per Design eine Quelle mit einem Ziel. Daher schreibt Unity pro Sprache eine separate Datei und hängt den Sprachcode an den Namen an: Eine Collection namens MyGame wird als MyGame-ru für Russisch und MyGame-ja für Japanisch exportiert. Das ist keine Einschränkung von Unity, sondern die Natur des Formats. Unity unterstützt sowohl XLIFF 1.2 als auch 2.0, und AI Glot liest beide.

Google Sheets ist im Grunde CSV mit einem Sync-Button. Pushen Sie Ihre Collection in ein Sheet und ziehen Sie sie zurück, wenn sie befüllt ist. Wenn Sie bereits so arbeiten, exportieren Sie das Sheet als CSV oder XLSX, und der Prozess ist identisch mit dem CSV-Weg.

Die ehrliche Empfehlung: Wählen Sie CSV, außer etwas in der weiteren Prozesskette erfordert zwingend XLIFF. Zehn Sprachen in einer Datei bedeuten einen Auftrag, einen Plan und eine Datei für den Re-Import.

Was tatsächlich im CSV-Export steckt

Öffnen Sie die Datei einmal, und der gesamte Workflow verliert sein Geheimnis. Ein einfacher Export hat eine Spalte Key, eine Spalte Id und eine Spalte pro Locale, benannt nach der Sprache und ihrem Code, wie English(en) und French(fr). Exportieren Sie mit Kommentaren, erhalten Sie zusätzlich eine Spalte Shared Comments sowie eine pro Locale, wie etwa French(fr) Comments.

Eine exportierte Zeile im Vorher-Nachher-Vergleich. Nur die französische Spalte wird beschrieben, da Unity beim Import Key, Id und Englisch als Referenz nutzt.

Zwei Spalten darin entscheiden darüber, ob Ihr Import überhaupt funktioniert.

Key und Id sind die Verknüpfung. Unity gleicht Zeilen beim Re-Import anhand dieser Werte ab und nutzt die Spaltenüberschriften, um sie zu finden. Ein übersetzter Key führt nicht sofort zu einer Fehlermeldung: Die Zeile passt einfach nicht mehr zusammen, und ein String fällt in jeder Sprache stillschweigend auf seinen Fallback zurück. Legen Sie präzise fest, welche Spalten übersetzt und welche beibehalten werden sollen, damit dies nicht passiert.

Die Kommentarspalten liefern Kontext, keinen Inhalt. Wenn Ihr Team Notizen für Übersetzer in Shared Comments schreibt, sind diese Notizen nützlich zum Lesen, aber falsch zum Übersetzen. Benennen Sie diese Spalten entsprechend.

Das, was kaputtgeht, und es ist nicht das Timing

Die Smart Strings von Unity sind die eigentliche Gefahr in einer String Table eines Spiels, und sie sind für alles unsichtbar, was Wort für Wort übersetzt.

Ein Smart String enthält Logik innerhalb des Textes. Ein leerer Platzhalter ist {}. Ein benannter Platzhalter gibt dem Übersetzer Kontext, wie {PlayerName}. Plurale folgen den Unicode CLDR-Regeln über einen Formatter, sodass ein einzelner Eintrag so aussehen kann: {0:plural:is 1 item|are {} items}. Sie können auch verschachtelt sein: {User.Address:{Street}, {City}}.

Ein Übersetzer, der die Syntax nicht kennt, ordnet die Klammern neu, übersetzt das Wort plural oder wandelt {PlayerName} hilfreicherweise in {NomDuJoueur} um. Jedes dieser Dinge ist ein Runtime-Error statt eines Tippfehlers, den Sie erst bemerken, wenn ein Spieler einen Screenshot davon schickt.

Dies gehört in die Anweisungen auf String-Ebene, und diese Unterscheidung richtig zu treffen, ist der nützlichste Teil dieses Artikels.

Der Scope gehört in die Plan-Anweisung. Eine Platzhalter-Regel gehört in die Anweisungen auf String-Ebene. Ein Vertauschen führt zu einem stillen Fehler.

Setzen Sie eine Platzhalter-Regel in den Plan, bewirkt sie nichts Nützliches. Setzen Sie eine Spalten-Regel in das Slot für String-Ebene, bewirkt sie gar nichts, völlig stillschweigend, da zu diesem Zeitpunkt keine Datei im Fokus ist. Beide Fehler verlaufen lautlos, weshalb sie diese dreißig Sekunden Aufmerksamkeit wert sind.

Wo Sie gerade dabei sind, noch die andere wirklich spielspezifische Regel: Ein Button, der auf Englisch passt, läuft im Deutschen über. Übersetzter Text ist oft 15 bis 30 % länger. Eine Anweisung auf String-Ebene kann eine maximale Länge fordern, sodass die Zeile passend geschrieben wird, anstatt sie nachträglich zu kürzen. Sagen Sie es einmal für die Einträge, die in einer UI mit fester Breite liegen.

Ausführung, Weg eins: der Browser

Laden Sie die CSV beim CSV-Translator oder in der App hoch und beschreiben Sie den Auftrag in einem Satz. Ungefähr so, und bewusst unglamourös:

The source is the English(en) column. Fill the empty French(fr), German(de)
and Japanese(ja) columns. Leave Key, Id, English(en) and every Comments
column exactly as they are.

Sie erhalten einen Plan zurück, bevor Kosten entstehen: die gefundenen Spalten, der Umfang, die Wortzahl und die Kosten. Falls die Datei falsch gelesen wurde, korrigieren Sie dies in einem Satz, und der Plan wird neu erstellt. Alles bis zur Genehmigung ist kostenlos, sodass eine Fehlinterpretation Sie nichts kostet außer der Zeit für die Korrektur einer Klausel.

Laden Sie dann eine CSV herunter, mit den gleichen Spalten, demselben Key und derselben Id, und importieren Sie diese erneut in Unity.

Ausführung, Weg zwei: Ihr Agent übernimmt den gesamten Loop

Wenn Sie mit Claude, Cursor, Copilot oder einem anderen Agenten arbeiten, der Befehle in Ihrem Projekt ausführen kann, kann dieser alles erledigen, ohne dass Sie einen Browser öffnen müssen. Die Ergebnisse werden genau dort abgelegt, wo Unity sie erwartet.

Einmal installieren und anmelden:

npm install --global @ai-glot/cli
aiglot auth login
Der Loop eines Agenten. Nur die Genehmigung verbraucht Credits, sodass der Plan kostenlos gelesen und korrigiert werden kann.

Hier ist ein Prompt, den Sie Ihrem Agenten geben können. Er ist so geschrieben, dass er direkt kopiert werden kann, und die wichtigen Teile werden darunter erklärt.

Our Unity String Table export is at Assets/Localization/Export/MyGame.csv.
Columns: Key, Id, English(en), and empty columns for French(fr), German(de)
and Japanese(ja).

Use the aiglot CLI to translate it. Run `aiglot batches create --help` and
`aiglot batches approve --help` first so you use the real flags.

Plan instruction: the source is English(en); fill only the empty French(fr),
German(de) and Japanese(ja) cells; leave Key, Id, English(en) and any
Comments column untouched.

Approval instructions: keep every curly-brace placeholder exactly as written,
including plural formatters and nested ones; never translate a placeholder
name; keep entries whose Key starts with MENU_ or HUD_ under 20 characters.

Use the lite quality tier. Show me the plan and the total cost BEFORE you
approve anything, then wait for me to confirm.

After I confirm, poll until it reaches a terminal status, download the result
over the original path, and tell me the row count so I can re-import in Unity.

Er weist den Agenten an, zuerst die Hilfe zu lesen. Ein Agent, der Flag-Namen rät, scheitert beim ersten Aufruf und erfindet dann einen Grund dafür.

Er trennt die zwei Arten von Anweisungen explizit, was genau der Sinn des obigen Abschnitts ist. So geschrieben, setzt der Agent jede Anweisung an der richtigen Stelle an, anstatt sie zu einem halb funktionierenden Block zu verschmelzen.

Er stoppt vor den Ausgaben. aiglot batches approve ist der einzige Befehl, der Credits kostet. Alles davor ist kostenlos und wiederholbar, sodass ein Agent, der unbeaufsichtigt Ihre Locales durchläuft, Sie nicht mit einer Rechnung überraschen kann. Diese Eigenschaft macht es vernünftig und nicht leichtsinnig, dies einem Agenten zu überlassen.

Er endet mit einer Zahl zur Überprüfung. Die Abfrage der Zeilenanzahl bietet Ihnen einen sekundenkurzen Sanity-Check vor dem Re-Import.

Zur Referenz, die daraus resultierende Sequenz:

# 1. Create the job. Free. Returns a plan and an id.
id=$(aiglot batches create Assets/Localization/Export/MyGame.csv \
      --instruction "The source is English(en). Fill only the empty French(fr), German(de) and Japanese(ja) cells. Leave Key, Id, English(en) and Comments columns unchanged." \
      --json | jq -r '.data.id')

# 2. Read the plan for free, and only then commit.
aiglot batches get "$id" --json | jq '.data.plan'

# 3. The only step that spends credits.
aiglot batches approve "$id" --quality lite \
  --instructions "Keep every curly-brace placeholder exactly as written. Never translate a placeholder name. Keep MENU_ and HUD_ entries under 20 characters."

# 4. Wait for a TERMINAL status, not for a specific one.
until status=$(aiglot batches get "$id" --json | jq -r '.data.status'); \
  [ "$status" = "completed" ] || [ "$status" = "failed" ] || [ "$status" = "cancelled" ]; do
  sleep 5
done

# 5. Back into the project.
[ "$status" = "completed" ] && \
  aiglot batches download "$id" --output Assets/Localization/Export/MyGame.csv

Es gibt auch einen MCP-Server, aiglot mcp, falls Ihr Agent Tools gegenüber einer Shell bevorzugt. Starten Sie mit der CLI: sie funktioniert in einem Skript, sie funktioniert in der CI, und Sie können genau lesen, was ausgeführt wurde.

Wenn Sie den XLIFF-Weg gewählt haben

Eine Datei pro Sprache bedeutet ein Auftrag pro Sprache. Das ist in Ordnung, bis es zehn sind. Es gibt zwei Wege, dies zu handhaben.

Packen Sie sie in eine ZIP-Datei. Bis zu 200 Dateien und 20 MB, maximal 4 MB pro Datei. Jede XLIFF im Archiv muss dieselbe Version haben (1.2 oder 2.0), aber sie dürfen unterschiedliche Zielsprachen haben, was genau dem Format des Unity-Exports entspricht. Ein Auftrag, eine Anweisung, ein Glossar für den gesamten Satz.

Unity erstellt pro Zielsprache eine XLIFF-Datei. Ein Archiv fasst diesen Satz wieder zu einem einzigen Job zusammen.

Oder nutzen Sie einen Loop mit der CLI, so wie im obigen Prompt, ein Batch pro Datei. Mehr Aufträge, aber jeder Plan ist separat prüfbar, was einige Teams beim ersten Durchlauf bevorzugen. In beiden Fällen kommen die Dateien als XLIFF in der Version zurück, in der sie eingereicht wurden, wobei die Quellsegmente unverändert bleiben und nur die Ziele gefüllt werden.

Der Teil, der über die Qualität entscheidet: Ihr eigenes Vokabular

Alles oben Genannte ist reine Infrastruktur. Ob ein übersetztes Spiel gut oder schlecht klingt, hängt davon ab, ob Ihre Begriffe konsistent bleiben.

Ein Glossar legt feste Begriffe fest und wendet diese konsistent auf jede Datei an.

Tragen Sie Begriffe, die nicht variieren dürfen, einmalig in ein Workspace-Glossar ein: Charakternamen, Namen von Gegenständen und Zaubersprüchen, Fraktionsnamen oder die hauseigene Übersetzung einer wiederkehrenden Zeile. Es gehört zum Workspace und nicht zu einem einzelnen Auftrag, sodass es für jede String Table gilt, die Sie danach senden, einschließlich des Exports in sechs Monaten, wenn das Spiel um viertausend Einträge gewachsen ist. Das sorgt dafür, dass Datei Nummer zwanzig mit Datei Nummer eins übereinstimmt.

Lassen Sie Ihren Agenten den Entwurf erstellen. Das Glossar ist über MCP erreichbar, inklusive Tools zum Auflisten, Lesen und Bearbeiten von Begriffen. So kann derselbe Agent, der gerade Ihre String-Tabellen gelesen hat, die wiederkehrenden Eigennamen und Kunstwörter extrahieren, Ihnen die Liste vorlegen und die genehmigten Begriffe in den Workspace schreiben, noch bevor die erste Übersetzung startet. Ein Glossar, das niemand ausfüllt, schützt nichts. Und bei einem Spiel mit tausend erfundenen Begriffen ist das manuelle Ausfüllen genau die Aufgabe, die auf unbestimmte Zeit verschoben wird.

Hier scheitert ein allgemeiner maschineller Übersetzer, und der Grund dafür ist mechanischer Natur und keine Frage des Geschmacks. Sein Glossar ersetzt einen Begriff überall dort, wo er passt, ohne den umgebenden Satz neu zu bewerten. In diesem Fall wird das Glossar während des Schreibens als Bedeutung einbezogen, sodass ein Name grammatikalisch korrekt gebeugt wird, anstatt einfach in die Mitte des Satzes gesetzt zu werden.

Der realistische Anwendungsbereich

Lassen Sie Ihre erste Spielstunde nicht einfach so durchlaufen und veröffentlichen Sie sie. Die ersten dreißig Minuten eines Spiels, die Store-Seite und alles, was ein Spieler wahrscheinlich zitieren wird, sind echtes Writing, und Writing verdient einen Menschen. Das sind ein paar hundert Wörter, die das größte Risiko für Ihren Ruf tragen. Einen Muttersprachlichen Experten dafür zu bezahlen, ist in absoluten Zahlen günstig und offensichtlich lohnenswert.

Die anderen neuntausend Einträge sind eine andere Aufgabe, und diese Unterscheidung ist wichtig: Volumen und Relevanz korrelieren nicht. Menübeschriftungen, Tooltips, Gegenstandsbeschreibungen, Quest-Logs, Errungenschaftstexte, Fehlerstrings: Hier fließt die eigentliche Zeit hinein. Das ist in Handarbeit mühsam und in einem Durchgang unauffällig. Übersetzen Sie die Masse hier und legen Sie dann Ihre eigene Qualitätsgrenze fest: Übernehmen Sie es direkt in den Build, fügen Sie eine professionelle Prüfung für Ihre zwei wichtigsten Märkte hinzu oder nur für die Quest-Texte und lassen Sie den Rest so, wie er zurückkommt. Keine dieser Optionen ist die Reparatur eines schlechten ersten Durchgangs, und alle sorgen dafür, dass Ihr Reviewer seine Zeit für die Sprache aufwendet und nicht für Tabellenkalkulationen.

Wenn Sie es an einer echten Datei sehen möchten, bevor Sie sich für eine Pipeline entscheiden, übernimmt der CSV-Übersetzer einen Export ohne Account. Das Gesamtbild finden Sie in unserem Leitfaden zum Übersetzen von Videospielen, und die Seite zur Spielelokalisierung deckt Formate außerhalb von Unity ab, falls Ihr Studio mehr als eine Engine verwendet.


Das hier beschriebene Exportverhalten von Unity stammt aus der Dokumentation des Localization-Packages für Version 1.5: das CSV-Spaltenlayout, der Abgleich von Key und Id, die Kommentarspalten, die Unterstützung für XLIFF 1.2 und 2.0 sowie die sprachspezifische XLIFF-Benennung. Prüfen Sie Ihre eigene Package-Version, falls Ihr Export anders aussieht. Die genannten Dateilimits waren zum Zeitpunkt der Erstellung gültig.

10.000 Wörter kostenlos bei Anmeldung

Bereit für die Übersetzung Ihrer großen Dateien?