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 exportiert String Tables als CSV, XLIFF oder JSON. Das gewählte Format bestimmt, wie der gesamte Arbeitsablauf aussieht. Nicht die Qualität, nicht die Kosten, sondern den Ablauf. Bei CSV erhältst du eine einzelne Datei mit einer Spalte pro Sprache. Bei XLIFF erhältst du eine Datei pro Sprache. Wenn du das Format falsch auf deinen Arbeitsablauf abstimmst, wird aus einem zweistündigen Auftrag schnell ein zweiwöchiger.

Dieser Leitfaden behandelt die beiden für Übersetzungen relevanten Formate, den tatsächlichen Inhalt der jeweiligen Exporte und die Durchführung der Übersetzung, ohne auch nur eine Zeile von Hand bearbeiten zu müssen. Google Sheets kommt ebenfalls vor, allerdings als Synchronisierungsfunktion und nicht als Exportformat.

Exportformate und die Synchronisierung mit Google Sheets

Im aktuellen Unity-Handbuch sind CSV, XLIFF und JSON als Exportformate aufgeführt, außerdem gibt es einen Zeichensatz-Export für Schriftarten. Google Sheets ist davon unabhängig: Das Paket kann ein Sheet mit einer String Table Collection synchronisieren. Dabei handelt es sich um eine Synchronisierung, nicht um eine exportierte Datei. AI Glot verarbeitet CSV und XLIFF direkt, daher ist für keines der beiden Formate eine Konvertierung nötig.

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 die Sprachen voneinander. Eine XLIFF-Datei verknüpft definitionsgemäß eine Ausgangssprache mit einer Zielsprache. Deshalb erstellt Unity für jede Sprache eine eigene Datei und hängt den Sprachcode an den Namen an: Eine Collection namens MyGame wird für Russisch als MyGame-ru und für Japanisch als MyGame-ja exportiert. Das ist keine Einschränkung von Unity, sondern liegt am Format. Unity unterstützt XLIFF 1.2 und 2.0, die OASIS-Standards 1.2 und 2.0, und AI Glot verarbeitet beide. In Version 1.2 besteht jeder String aus einer trans-unit mit Quelle und Ziel, und zwar in dieser Form:

<xliff version="1.2">
  <file source-language="en" target-language="fr" datatype="plaintext" original="MyGame">
    <body>
      <trans-unit id="4102">
        <source>Start game</source>
        <target>Commencer</target>
      </trans-unit>
    </body>
  </file>
</xliff>

Google Sheets dient der Synchronisierung, nicht als Exportformat. Du hältst ein Sheet mit deiner Collection synchron und spielst es wieder ein, sobald es ausgefüllt ist. Wenn du bereits so arbeitest, exportierst du das Sheet als CSV oder XLSX und gehst genauso vor wie beim CSV-Workflow. Ein Unity-Mitarbeiter wurde gefragt, wie sich alle Tabellen als CSV exportieren lassen, und verwies stattdessen auf Google Sheets oder XLIFF. Außerdem steht im Handbuch, dass du beim XLIFF-Export auswählen kannst, welche Tabellen einbezogen werden sollen.

Die ehrliche Empfehlung lautet also: Wähle CSV, sofern nicht ein nachgelagerter Arbeitsschritt XLIFF erfordert. Im nächsten Abschnitt erfährst du, warum Smart Strings zusätzlich für CSV sprechen. Zehn Sprachen in einer Datei bedeuten einen Übersetzungslauf, einen Plan zum Prüfen und eine Datei zum erneuten Importieren.

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 bilden den Abgleich. Unity gleicht beim erneuten Import die Zeilen anhand dieser Werte ab und verwendet die Spaltenüberschriften, um sie zu finden. Damit Unity eine Zeile zuordnen kann, braucht es Key oder Id. Wird ein Key geändert, gilt der Eintrag als ein anderer. Ein übersetzter Key passt deshalb nicht mehr zu dem Eintrag, den die anderen Sprachversionen verwenden. Wenn du klar angibst, welche Spalten übersetzt werden sollen und welche unverändert bleiben müssen, kann das nicht passieren.

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.

Beim erneuten Import der Datei fragt Unity nach einem Importmodus. Merge aktualisiert passende Keys, fügt neue hinzu und behält alle übrigen bei. Replace passt die Collection an die Datei an und entfernt Keys, die darin nicht vorkommen. Verwende also Merge, sofern du nicht ausdrücklich etwas löschen möchtest.

Welche Daten in den einzelnen Formaten erhalten bleiben

Auf derselben Seite zur Version 6000.7 ist aufgeführt, welche Daten beim jeweiligen Export erhalten bleiben. XLIFF enthält nur Keys, IDs und Werte, keine Smart-Flags, Varianten oder Kommentare. CSV behält Keys, IDs, Smart-Flags, Werte und Kommentare bei, und JSON enthält Keys, IDs, Smart-Flags, Werte und Varianten, jedoch keine Kommentare. Bei einer Tabelle voller Smart Strings ist CSV daher die sicherere Wahl für den Roundtrip, denn das Smart-Flag bleibt mit der Zeile verknüpft. Wenn dein Dienstleister auf XLIFF besteht, behältst du die ursprüngliche Collection als Master und importierst die Datei mit Merge.

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 im Text. Ein Platzhalter ohne Namen sieht so aus: {}. Ein benannter Platzhalter bietet Übersetzenden Kontext, zum Beispiel {PlayerName}. Pluralformen folgen den Unicode-CLDR-Regeln und werden über Unitys Plural-Formatter umgesetzt. So kann ein einzelner Eintrag etwa {0:plural:is 1 item|are {} items} lauten. Platzhalter lassen sich auch verschachteln: {User.Address:{Street}, {City}}. Sprachen unterscheiden sich darin, wie viele Pluralformen sie benötigen: Japanisch hat eine, Russisch drei oder mehr (one, few, many und other nach CLDR). Ein englischer Pluraleintrag nimmt daher in jeder Sprache eine andere Form an.

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.

Wenn du schon dabei bist, beachte auch diese wirklich spielspezifische Regel: Ein Button, der auf Englisch passt, ist auf Deutsch zu lang. Übersetzte Texte fallen je nach Sprachpaar oft länger aus, besonders kurze Strings wachsen überproportional: Im Artikel des W3C zur Textlänge wird eine IBM-Empfehlung zitiert, nach der Strings mit bis zu 10 Zeichen auf 200 bis 300% ihrer ursprünglichen Länge anwachsen können. Mit einer Anweisung auf String-Ebene kannst du eine maximale Länge vorgeben. So wird der Text von Anfang an passend formuliert, statt ihn später zu kürzen. Gib diese Vorgabe einmal für die Einträge an, die in eine Benutzeroberfläche mit fester Breite passen müssen.

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 --yes \
  --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.


Die hier beschriebenen Exportfunktionen von Unity basieren auf der Dokumentation zum Localization-Paket in Version 1.5. Dazu gehören das Spaltenlayout von CSV, der Abgleich über Key und Id, die Kommentarspalten, die Unterstützung für XLIFF 1.2 und 2.0, die Benennung separater XLIFF-Dateien pro Sprache sowie die Inhalte der verschiedenen Formate und die Modi Merge und Replace aus dem aktuellen Handbuch für Version 6000.7. Prüfe deine Paketversion, falls dein Export anders aussieht. Die hier genannten Dateilimits galten zum Zeitpunkt der Erstellung.

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

Kostenlosen Account erstellen →

Prompt kopiert

  1. 1Öffnen Sie Ihren KI-Agenten
  2. 2Fügen Sie den Prompt einCtrl V
  3. 3Folgen Sie den Anweisungen
Prompt anzeigen

Übersetze eine Datei für mich mit AI Glot. Frage mich nach der Datei und den Sprachen, und befolge dann https://ai-glot.com/agent.md

Ihre ersten 5.000 Wörter kostenlos